2013-09-24 74 views
0

我讀上搖擺定時器的文檔,當我遇到一些有關ActionListener小號來了。當進一步研究,所有我能找到的是如何創建連接到JButtonActionListener,等你如何創建一個簡單的ActionListener,沒有連接到任何東西?如何在不使用JButton的情況下使用actionListeners?

我的計時器不能正常工作,而且我認爲這可能是因爲我用的是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(); 
    } 
} 

回答

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(); 
      } 
     }); 
    } 
} 
+0

我該如何啓動計時器? – quixotrykd

+0

非常感謝,我一直在研究這個 – quixotrykd

3

ActionListener只是一個interface

您可以通過實現它,然後它instanstanting創建一個獨立的版本....

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更多細節

+0

你可以看看我的更新的代碼嗎? – quixotrykd

+0

你的代碼似乎對我來說工作得很好。你有什麼問題? – MadProgrammer

相關問題