如何为许多组件创建单个actionlistener函数

时间:2013-05-30 19:44:57

标签: java swing actionlistener

我在actionlistener中有以下代码。它工作正常。

private void setActionPerformed(java.awt.event.ActionEvent evt){
    Container ct=button1.getParent();
    String panel_name=ct.getName();
    String button_val=button1.getText();
    textfield1.setText(panel_name+"-"+button_val);
}

但我有大约50个button.so我想在所有按钮的所有actionlistener中调用函数(setActionPerformed)。 所以我尝试了以下

private void setActionPerformed(java.awt.event.ActionEvent evt){
    Container ct=this.getParent();
    String panel_name=ct.getName();
    String button_val=this.getText();
    textfield1.setText(panel_name+"-"+button_val);
}

但它不起作用!!任何sgsn ??

2 个答案:

答案 0 :(得分:3)

看起来你正在寻找ActionEvent#getSource

JButton button = (JButton) evt.getSource();
String buttonText = button.getText();

答案 1 :(得分:1)

如果我理解了这个问题,你想为每个按钮重复使用相同的代码。您应该创建一个继承自ActionListener的类,并且在setActionPerformed(ActionEvent e)方法中,您应该使用e.getSource()来了解哪个按钮已被按下。

您只需将addActionListener(ActionListener)与此新类的实例一起用作参数。