0

当我遇到一些关于ActionListeners. 当进一步研究时,我能找到的只是如何创建一个ActionListener附加到 aJButton等。你怎么能创建一个 plain ActionListener,而不是附加到任何东西?

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

这是我的代码:

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(10, al);
        timer.start();
    }

    public static void main(String[] args) {
        MyTimer start = new MyTimer();
    }
}
4

2 回答 2

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...
    }
};

查看接口以获取更多详细信息

于 2013-09-24T20:35:41.220 回答
1

你怎么能创建一个简单的actionlistner,不附加任何东西?

抢在这个:

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();
            }
        });
    }
}
于 2013-09-24T20:39:13.650 回答