2014-10-26 19 views
-1
Calling Method  
public void callingMethd(){ 
     jbutoon.addActionListener(new ListenToSave(p));//execute on some event 
      //want to use updated p here.but the thing is after we add call listen to save,compononet //added in ListenToSave class wont reflect back here.I guess some problem with reference 

} 
public class ListenToSave implements ActionListener { 
    JPanel gameMatrixPanel=null; 
    public ListenToSave(JPanel p){ 
    gameMatrixPanel=p; 
    } 
    public void actionPerformed(ActionEvent e) { 
      gameMatrixPanel.add(//some compononent); 
    } 

    } 

發生的是我想使用更新後的面板P由ListenToSave()它獲得更新後調用方法的問題更新自己,但是面板的更新用不發生呼叫方法。要做什麼JCompononet對象無法與新的變化

+0

我不認爲您的發佈代碼和文本足以讓我們瞭解您的問題,足以回答它。如果您很快就沒有得到體面的答案,請考慮創建併發布[最小,完整和可驗證示例程序](http://stackoverflow.com/help/mcve)。 – 2014-10-26 15:39:37

回答

1
new ListenToSave(p); 

這只是調用ListenToSave的構造函數。所有構造函數都是

gameMatrixPanel=p; 

因此,它不會修改面板中的任何內容。

什麼修改面板是

public void actionPerformed(ActionEvent e) { 
    gameMatrixPanel.add(//some compononent); 
} 

如果ListenToSave監聽器被添加作爲一個按鈕的ActionListener或其它部件

  • 當該按鈕或此方法將僅稱爲

    • 其他組件被點擊或修改,以便組件觸發一個ActionEvent。

    因此,您的代碼沒有多大意義,但我並不真正瞭解您的實際意圖,因此很難提供解決方案。

    目前,我建議你閱讀swing tutorial on events and listeners,因爲看起來你並沒有真正理解這個概念。

  • +0

    新ListenToSave(p); //執行一些事件....正如我所提到的,這個構造函數我們將被稱爲像mouseclick事件的一部分。所以控制將進入actionPerformed.So總之它會像這樣// jbutton.addActionListener(new ListenToSave(p)); – user3678399 2014-10-26 15:35:18

    +0

    因此,發佈的代碼與真實代碼完全不一樣?這沒有幫助。無論如何,這並沒有太大的改變。將偵聽器添加到按鈕會將偵聽器添加到按鈕。 actionPerformed()方法稍後會在點擊按鈕時調用。通常在構建框架或面板時添加監聽器。然後用戶使用面板,當他點擊一個按鈕時,它的動作監聽器被調用。當另一個偵聽器被調用時,您應該添加一個偵聽器。這沒有什麼意義。 – 2014-10-26 15:38:29