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

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

如何将操作侦听器添加到这些按钮,以便从 main 方法中调用它们,以便单击它们时,我可以在程序中调用它们?actionperformed


答案 1

两种方式:

1. 在你的类中实现 ActionListener,然后使用 稍后,你必须定义一个 menthod, .但是,对多个按钮执行此操作可能会令人困惑,因为该方法必须检查每个事件 () 的源才能查看它来自哪个按钮。jBtnSelection.addActionListener(this);public void actionPerformed(ActionEvent e)actionPerformede.getSource()

2. 使用匿名内部类:

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

稍后,您必须定义 .当您有多个按钮时,此方法效果更好,因为您对用于处理操作的各个方法的调用紧挨着按钮的定义。selectionButtonPressed()

2,更新。由于Java 8引入了lambda表达式,因此可以说与#2基本相同,但使用更少的字符:

jBtnSelection.addActionListener(e -> selectionButtonPressed());

在本例中,是操作事件。这之所以有效,是因为 ActionListener 接口只有一个方法 。eactionPerformed(ActionEvent e)

第二种方法还允许您直接调用该方法。在这种情况下,如果发生其他一些操作,您也可以调用 - 例如,当计时器关闭或发生其他事情时(但在这种情况下,您的方法将被命名为不同的东西,也许)。selectionButtonPressedselectionButtonPressed()selectionChanged()


答案 2

您最好的选择是查看Java Swing教程,特别是有关按钮的教程

简短的代码片段是:

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

推荐