Java 如何显示JLabel文本1秒?
我希望我的错误消息临时显示在JLabel中,然后将文本设置回“”。但它看起来只是跳过了设置消息。我已经浏览了代码,发现它正在设置文本,但由于某种原因它没有显示。我甚至尝试过repaint()方法,但仍然一无所获。任何帮助都将不胜感激 以下是我所拥有的:Java 如何显示JLabel文本1秒?,java,swing,jlabel,repaint,Java,Swing,Jlabel,Repaint,我希望我的错误消息临时显示在JLabel中,然后将文本设置回“”。但它看起来只是跳过了设置消息。我已经浏览了代码,发现它正在设置文本,但由于某种原因它没有显示。我甚至尝试过repaint()方法,但仍然一无所获。任何帮助都将不胜感激 以下是我所拥有的: public void displayError(String msg){ int ctr = 0; while(ctr<2){ try { lblError.setText(msg)
public void displayError(String msg){
int ctr = 0;
while(ctr<2){
try {
lblError.setText(msg);
lblError.repaint();
Thread.sleep(500);
} catch (Exception e) {}
ctr++;
}
lblError.setText("");
}
public void displayError(字符串消息){
int ctr=0;
而(ctr我假设您正在事件调度线程上调用此方法。(如果不是,您应该这样做,因为几乎所有Swing调用都应该在那里进行。)
您需要允许线程重新获取控制,但由于您的thread.sleep(),它无法执行此操作。请查看调用计时器或SwingWorker后台线程,两秒钟后,该线程将重置文本
我对swing的记忆还不足以帮助您处理标签部分,但我要指出的是,您永远不应该假设您在Thread.sleep中指定的毫秒数实际上是在您离开try块时发生的。特别是因为您刚刚接受了异常。我也不确定您为什么要指定它我希望将文本设置为相同的值两次。请参阅。我执行异常处理只是为了显示我想要执行的操作。while循环只是出于测试目的。我希望在线程之前和之后都对其进行更改。sleep().至于测试该方法的毫秒数,请记住,这对我和我兄弟来说是一个非常小的应用程序。如果出现类似的问题,它不会造成太大的危害。尽管制作了一个游戏和动画,我肯定能理解你的观点。感谢你的输入。Swing Timers链接是一个巨大的帮助。谢谢,垃圾上帝