0

sに関する情報に出くわしたとき、スイングタイマーに関するドキュメントを読んでいましたActionListener。さらに調査ActionListenerしたところ、 などにアタッチされたを作成する方法しか見つかりませJButtonんでした。どのようにアタッチされていないプレーンを作成できます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

何にも結び付けられていない、単純なアクションリストナーを作成するにはどうすればよいでしょうか?

これで略奪します:

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 に答える