2012-08-10 24 views
1

我想知道是否有任何其他方式來處理和來自N個控件中的任何一個的事件,這些控件將讀取ActionCommand值,並基於此操作。到目前爲止,我基本上有一個ActionListener defitinion,我分別添加到每個控件。舉例來說,如果我有50個複選框,我想編寫一個方法類似Java swing - 用於多個控件的相同處理程序

void process(){ 
    getCommandValueAndDoSth(); 
} 

但不是實例化的ActionListener所有複選框,我想只是控制所有的複選框。

回答

2

您可以爲您的所有組件設置一個偵聽器。

ActionListener al = new ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
    // either do it like this 
    process(e.getActionCommand()); 
    // or like this to distinguish between the controls 
    if (e.getSource() == firstElement) processChangeInFirstElement(); 
    else if (e.getSource() == secondElement) processChangeInSecondElement(); 
    // etc 
    } 
} 

Component firstElement = new JCheckBox("asdf"); 
firstElement.addActionListener(al); 

Component secondElement = new JTextField(); 
secondElement.addActionListener(al); 

如果你需要有多種類型的聽衆(ChangeListener, MouseListener, ActionListener, KeyListener, ...),那麼你的每一個聽者類型的一個實例,並將其應用到相應的組件。

1

您可以將同一個ActionListener附加到多個組件(例如,添加到您的所有複選框)。處理程序只需要能夠從ActionEvent派生所有必需的信息(如果需要,可以使用event.getSource())獲取組件。

相關問題