2012-08-10 27 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())获取组件。

相关问题