如何在Java中将ActionListener添加到JButton中

时间:2008-11-12 18:40:05

标签: java swing user-interface jbutton actionlistener

private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");

如何向这些按钮添加动作侦听器,以便从主方法上我可以在它们上面调用actionperformed,所以当它们被点击时我可以在我的程序中调用它们?

4 个答案:

答案 0 :(得分:46)

两种方式:

1。在您的班级中实施ActionListener,然后使用jBtnSelection.addActionListener(this);稍后,您必须定义一个menthod public void actionPerformed(ActionEvent e)。但是,对多个按钮执行此操作可能会造成混淆,因为actionPerformed方法必须检查每个事件的来源(e.getSource())以查看它来自哪个按钮。

2。使用匿名内部类:

jBtnSelection.addActionListener(new ActionListener() { 
  public void actionPerformed(ActionEvent e) { 
    selectionButtonPressed();
  } 
} );

稍后,您必须定义selectionButtonPressed()。 当您有多个按钮时,这会更好用,因为您对处理操作的各个方法的调用就在按钮定义的旁边。

第二种方法还允许您直接调用选择方法。在这种情况下,如果发生其他一些操作,你也可以调用selectionButtonPressed() - 例如,当计时器熄灭时或某些东西(但在这种情况下,你的方法会被命名为不同的东西,也许是selectionChanged()

答案 1 :(得分:7)

您最好的选择是查看Java Swing tutorials,特别是tutorial on Buttons

简短的代码段是:

jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );

答案 2 :(得分:1)

idk如果可行,但我设置了变量名

public abstract class beep implements ActionListener {
public static void main(String[] args) {
    JFrame f = new JFrame("beeper");
    JButton button = new JButton("Beep me");
    f.setVisible(true);
    f.setSize(300, 200);
    f.add(button);
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //insert code here
        }
    } );

}

}

答案 3 :(得分:0)

我没有完全关注,但要添加动作侦听器,只需调用addActionListener(来自Abstract Button)。如果这不能完全回答您的问题,您能提供更多详细信息吗?