당분간은 매분 2 분마다 Printing...
을 인쇄하는 프로그램을 만들고 있습니다. 나의 이해에서스윙 타이머가 인터발에서 이벤트를 실행하지 않음
package mainPackage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class Ticker {
public static void tick() {
System.out.println("Printing...");
}
public static void main(String args[]) {
ActionListener timerListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
tick();
}
};
Timer mainTimer = new Timer(500,timerListener);
mainTimer.start();
}
}
mainTimer
객체가 모든 500ms로 timerListener
처리 이벤트를 발사한다 : 여기 내 코드입니다. 이 코드를 실행하면 아무 일도 일어나지 않습니다. 스윙 event dispatch thread에서
내가 내 대답을 삭제 한 사용을 고려 나는 당신이 따르지 않는 것을 본다 : https://stackoverflow.com/help/someone-answers – c0der
이 점을 지적 해 주셔서 감사합니다. 이제이 오류를 바로 잡았으니 대답이 무엇인지 말해 줄 수 있습니까? – Psear
'SwingTimer'는 EDT에서 작동합니다. EDT가 이벤트 핸들러에 들어가기 전에 응용 프로그램 스레드가 종료되기 때문에 이벤트를 가져 오지 못합니다. 작동하려면 최소한 첫 번째 이벤트 (예 : 600ms)가 될 때까지 주 스레드를 잠자 게해야합니다. –