仕事用に Scoreboard Java アプリケーションを開発しています。MySQL を使用してスコア値を保存し、Java アプリケーションがそれらにアクセスしてプロジェクターに表示します。これまでのところ、Swing を使用して Java アプリケーションを作成することができました。スコアボードを完全に再描画しなくても更新できるように、jLabels を使用してすべてのスコアを表示します。
ここで、スコアボードを定期的に更新する必要があります。使用しようとしましThread.sleep
たが、スレッドを中断する方法がわかりません。スレッドを中断する必要があるのは、スコアボードに表示するエントリの数が構成パネルで変更された場合、正しい数を表示するためにスコアボードを再描画する必要があるためです。
現在sleep
、何も触れない限り、コードで正常に動作します。しかし、私が何かを変えるとすぐに、ConfigPanel
物事はうまくいきません。
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()
呼び出されます。
現時点では、redrawScoreboard
が呼び出されると、5000 までカウントし続ける間、キューに置かれます。スコアボードを再描画できるようconstUpdates
に中断するにはどうすればよいですか。ここでも最良の選択肢はありますかsleep
?sleep
または、何か他のことを試す必要がありますか?