Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jToggleButton.setText()不更改按钮上的文本_Java_Swing_Netbeans_Jtogglebutton - Fatal编程技术网

Java jToggleButton.setText()不更改按钮上的文本

Java jToggleButton.setText()不更改按钮上的文本,java,swing,netbeans,jtogglebutton,Java,Swing,Netbeans,Jtogglebutton,我在NetBeans工作。我想在点击一个切换按钮后做一个简单的3-2-1倒计时,在按钮上显示倒计时。我对Java中与时间相关的任何东西都有点陌生,但制作如此简单的倒计时的最简单方法似乎就是使用Thread.sleep,如下所示。程序按其应该的方式等待3秒钟,并将按钮文本打印到命令行,但是按钮上的文本本身不会改变。知道为什么会发生这种情况以及如何解决吗?谢谢 jToggleButton1.setText("3..."); System.out.println(jToggleButton1.getT

我在NetBeans工作。我想在点击一个切换按钮后做一个简单的3-2-1倒计时,在按钮上显示倒计时。我对Java中与时间相关的任何东西都有点陌生,但制作如此简单的倒计时的最简单方法似乎就是使用Thread.sleep,如下所示。程序按其应该的方式等待3秒钟,并将按钮文本打印到命令行,但是按钮上的文本本身不会改变。知道为什么会发生这种情况以及如何解决吗?谢谢

jToggleButton1.setText("3...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("2...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("1...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}

您的问题是,您正在事件调度线程中执行所有操作。因此UI没有机会更新。您需要使用SwingWorker或更好的swing timer,即具有动作回调的swing timer,使其正常工作

以下是如何使用swing timer的示例: