如何在没有JButton的情况下使用actionListeners?

时间:2013-09-24 20:28:39

标签: java swing actionlistener

当我看到有关ActionListener的一些信息时,我正在阅读关于摇摆计时器的文档。进一步研究后,我所能找到的是如何创建附加到ActionListener的{​​{1}}等。如何创建一个普通的JButton,而不是附加到任何东西?

我的计时器工作不正常,我认为可能是因为我错误地使用了ActionListener

这是我的代码:

ActionListener

2 个答案:

答案 0 :(得分:3)

ActionListener只是interface

您可以通过实施它然后实例化来创建独立版本....

public class MyActionHandler implements ActionListener {
    public void actionPerformed(ActionEvent evt) {
        // do something...
    }
}

将来某个时候......

MyActionHandler handler = new MyActionHandler();

或者你可以创建一个匿名实例....

ActionListener al = new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        // do something...
    }
};

请查看Interfaces了解详情

答案 1 :(得分:1)

如何创建一个简单的actionlistener,而不是附加到任何东西?

嘲笑:

ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Hello World!");
    }
};

// Using the listener with 2 seconds delay
java.swing.Timer timer = new java.swing.Timer(2000, listener);
timer.setRepeats(false);

// Start the timer
timer.start();

试试这个:

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

public class MyTimer {
    ActionListener al = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            System.out.println("testing");
        }
    };

    public MyTimer() {
        Timer timer = new Timer(1000, al);
        timer.start();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                 new MyTimer();
            }
        });
    }
}