2009-12-03 3 views
0

그래서 javax.swing.Timer가 어떻게 작동 하는지를 배우려고합니다. 그러나 간단한 조작을 할 수는 없습니다. 기본적으로 내가하려고하는 모든 시스템은 "test2"초마다 인쇄 할 수 있지만 actionPerformed 메서드가 호출 된 적이없는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Java 타이머가 동작하는 것을 알 수 있습니다 (javax.swing.Timer)

시험 1 개 시험 3 시험 4 시험 6

감사합니다 5 시험 :

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.Timer; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("test 1"); 

     final Other o = new Other(); 

     class TimerListener implements ActionListener 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       System.out.println("test2"); 
      }    
     } 
     //test 
     System.out.println("test 3"); 

     ActionListener listener = new TimerListener(); 

     //test 
     System.out.println("test 4"); 

     final int DELAY = 1000; 
     Timer t = new Timer(DELAY, listener); 

     //test 
     System.out.println("test 5"); 

     t.start(); 

     //test 
     System.out.println("test 6"); 
    } 
} 

이 위의 코드가 생성하는 출력입니다!

답변

0

타이머가 작동하기 전에 프로그램이 종료됩니다. Thread.currentThread().sleep(10000)을 추가하면 타이머 이벤트가 표시됩니다.

+0

고마워요, 그 속임수를했습니다! – Olegious

+0

또한 EDT에서 (이상하게)'javax.swing.Timer'을 사용하지 말아야합니다. –

0

주 방법을 마친 후에도 타이머가 프로그램을 계속 실행하지 않습니다. 다른 스레드를 시작하거나 주 스레드가 충분한 시간 동안 실행되도록하지 않고 타이머가 실행되지 않을 수 있습니다.

관련 문제