스윙에 setScreen(int stage)
이라는 일부 버튼을 숨기고 표시하는 메서드가 있습니다.이 메서드는 stage
매개 변수에 따라 특정 버튼을 숨기거나 나타내지 않습니다.스윙 작업을 즉각적으로 만들기
void setScreen(int stage) {
switch (stage) {
case WELCOME:
screen.infoLabel.setText("Welcome!");
screen.startButton.setVisible(true);
break;
case STAGE_TWO:
screen.infoLabel.setText("We are in stage two!");
screen.startButton.setVisible(false);
break;
}
screen.validate();
}
화면은 다음과 같습니다
... //Here stage has been assigned to some value
setScreen(stage);
if (stage != STAGE_TWO) {
sleep(WAIT_TIME * 1000);
stage = WELCOME;
setScreen(stage);
}
setScreen(int stage)
에 대한 코드는 다음과 같은 것입니다 : 나는 다음 메소드를 호출 몇 초를 기다린 후이 코드에서처럼, 다시 호출 할 JFrame을 확장하는 클래스의 인스턴스화.
여기서 문제는 변경 내용이 커밋되기 전에 스레드가 절전 모드로 전환되기 때문에 첫 번째 setScreen(stage)
이 표시되지 않는다는 것입니다. 시스템의 시간을 확인하는 동안 잠을 대신 사용하려고했지만 효과는 같습니다.
** 편집 : ** 나는 유용한 StackOverflow 스레드에서 Swing Timer에 대한 유용한 정보를 발견했습니다. 나는 그것으로 일하고 내가하는 모든 유용한 진보를 업로드 할 것이다.
스윙 타이머 또는 SwingUtils.invokeLater 호출 –
네 당 전체 타이머 수 있습니다합니다. 아마 당신이 여기에 필요한 것을 다뤘습니다 : http://stackoverflow.com/questions/24270226 –