내 작업을 위해 Scoreboard Java 응용 프로그램을 개발 중입니다. MySQL을 사용하여 스코어 값을 저장하고 Java 응용 프로그램이이를 액세스하여 프로젝터에 표시합니다. 지금까지 Swing을 사용하여 Java 응용 프로그램을 만들었습니다. jLabels를 사용하여 모든 점수를 표시하므로 점수 판을 완전히 다시 그려야 업데이트 할 수 있습니다.Java - MySQL의 정기 업데이트
이제 스코어 보드를 정기적으로 업데이트해야합니다. Thread.sleep
을 사용하려고 시도했지만 스레드를 인터럽트하는 방법을 모르겠습니다. 스레드를 중단해야하는 이유는 점수 판에 표시 할 항목 수가 구성 패널에서 변경되는 경우 오른쪽 nummber를 표시하기 위해 점수 판을 다시 그려야하기 때문입니다.
현재 sleep
은 아무 것도 만지지 않는 한 코드에서 잘 작동합니다. 그러나 내가 무언가를 변경하자마자, ConfigPanel
일이 잘못되어 버립니다. connfiguration이 redrawScoreboard()
을 변경되었습니다
package au.thewebeditor.scoreboard.apps;
import java.lang.*;
public class Program {
private static Scoreboard sb;
private static ConfigPanel cp;
public Program(){
sb = new Scoreboard();
cp = new ConfigPanel();
}
public static void redrawScoreboard() throws NullPointerException{
try{
sb.dispose();
} catch (NullPointerException e){
//DO NOTHING
}
sb = new Scoreboard();
try {
cp.toFront();
} catch (NullPointerException e) {
cp = new ConfigPanel();
}
constUpdates();
}
public static void showConfig(){
cp.setVisible(true);
cp.toFront();
}
public static void main(String[] arguments){
new Program();
constUpdates();
}
private static void constUpdates() {
boolean go = true;
while (go){
try {
Thread.sleep(5000);
Scoreboard.updateScores();
} catch (InterruptedException e) {
//DO nothing
}
}
}
}
이라고합니다.
redrawScoreboard
이 호출 될 때 constUpdates
이 계속해서 5000으로 계산되는 동안 큐에 대기합니다. sleep
을 어떻게 중단하여 스코어 보드를 다시 그릴 수 있습니까? sleep
도 가장 좋은 옵션입니까? 아니면 다른 것을 시도해야합니까?
언제든지'javax.swing.Timer'를 체크 아웃 할 수 있습니다. 나는 또한 [Concurrency in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)을 살펴볼 것입니다. 잠정적 인 EDT 위반이 있기 때문에 ... – MadProgrammer