2012-09-14 23 views
1

我有它的一類叫做Game和一個按鈕下面的代碼訪問類中,我的方法是在Java中

public Game(){ 
    (some code..) 
    btn_start.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) 
       { 
           (some code..) 
        timer_task = new MyTask(); 
           (some code..) 
       } 
      }); 
     } 
} 

我的問題是MyTask需要鍵入「遊戲」的對象(各種原因)。 如何發送MyTask()我的actionListener方法所在的類? Java中有這樣的事情嗎?

我試過使用.this,但它表示它指的是ActionListener

回答

4

使用Game.this代替

這主要講述的Java使用的this的outter類引用,而不是

+0

謝謝!我試過了,它似乎工作正常! – user1626166

1

你可能要考慮在你的Game類的私有方法來創建MyTask嘗試。類似於

public void someMethod() 
{ 
    ... 
    btn_start.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      handleStart(); 
     } 
    }); 
    ... 
} 

private void handleStart() 
{ 
    (some code..) 
    timer_task = new MyTask(this); 
    (some code..) 
} 
+0

感謝您使用此解決方案。這是我一開始做的,但我需要從其他課程中的私人課程中獲得一些資產,所以我最終公開了它。 – user1626166

+0

是的,取決於你的情況。該模式首先使這些處理程序方法處於私有狀態,然後在需要通過除事件偵聽器(或其他外部事件偵聽器)之外的其他外部進程調用它們時將它們公開。總之,它是一種可重用的模式。原則在於儘可能縮短事件監聽器的方法來支持可重用的代碼模式:)雖然我必須承認'Game.this'可能很有吸引力,明智地使用它! –