2014-02-22 53 views
0

我迄今發現的唯一的方式來獲得,當一個ActionEvent激活其他組件的信息獲取成分是通過執行以下操作:爪哇 - 的ActionListener:來自親

((Swing Component)ActionEvent.getSource()).getParent().getComponent(---).method(); 

,雖然它的工作它不是實際的或可讀的,更不用說如果我在父組件中移動組件,最有可能停止正常工作。

那麼最好的方法是什麼呢?我是否應該使用actionlistener開始,或者是否有更好的類/設計用於此目的?

回答

1

使聽者的內部類,並直接訪問組件:

private JLabel label; 
private JButton button; 

MyPanel() { 
    ... 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      label.setText("button clicked"); 
     } 
    } 
} 

http://docs.oracle.com/javase/tutorial/uiswing/events/intro.html

內部類主要發明該特定原因。

+0

其實這就是我已經擁有它,問題是組件是在父類中創建的。我將任何給定時間的所有組件存儲在一個hashmap中,所以我想我可以訪問我需要的元素並將其發送給actionPerformed內部的構造函數。 –

+0

是的,這似乎工作得更好,謝謝! –