调用.addActionListener()时使用的参数是什么?

时间:2016-05-26 08:15:44

标签: java button this actionlistener frames

我最近在Java中学到了很多东西,但有些东西真的让我烦恼。当程序涉及一个构造函数时,我学会了/如何使用ActionListener,例如,

public class test extends JFrame implements ActionListener {
JButton button;

public test 
{
setLayout(null);
setSize(1920,1080);
setTitle("test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("");
button.setBounds(x,x,x,x);
button.AddActionListener(this); //What can replace the this parameter here.
button.setVisible(true);
add(button);
}
public static void main(String[] args) {
    test testprogram = new test();
    test.setVisible(true);
}
@Override
    public void actionPerformed(ActionEvent clickevent) {
    if (clickevent.GetSource() == button) { 
      //DoSomething
    }
}

2 个答案:

答案 0 :(得分:1)

它可以是任何实现ActionListener

的东西

您可能需要考虑不使用JFrame工具ActionListener:这意味着

  1. 它是实现actionPerformed的类'接口的一部分;但你可能不希望其他类直接调用它。
  2. 你只能“一次”实现它,所以你最终必须有条件逻辑来确定事件的来源,然后适当地处理它。
  3. 另一种方法是创建一个button特定的动作监听器:

    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent clickevent) {
        // Don't need to check if it is from button, nothing else
        // could have created the event.
      }
    });
    

    并从implements ActionListener类中删除test

答案 1 :(得分:0)

这是将要处理ActionEvent的类的实例。

来自Documents

  

将事件处理程序类的实例注册为一个侦听器   或更多组件。例如:

     

someComponent.addActionListener(instanceOfMyClass);