我正在为我的工作开发记分牌 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
被调用时,它只是坐在队列中,同时constUpdates
一直数到 5000。我如何打断它,sleep
以便重新绘制记分牌。sleep
这里甚至是最好的选择吗?还是我应该尝试别的?