1

我的 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 个按钮。所以我想在所有按钮的所有动作侦听器中调用函数(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);
}

但它不工作!有sgn吗??

4

2 回答 2

3

看起来您正在寻找ActionEvent#getSource

JButton button = (JButton) evt.getSource();
String buttonText = button.getText();
于 2013-05-30T19:51:37.573 回答
1

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

您只需使用addActionListener(ActionListener)这个新类的实例作为参数。

于 2013-05-30T19:53:15.393 回答