Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 如何显示JLabel文本1秒?_Java_Swing_Jlabel_Repaint - Fatal编程技术网

Java 如何显示JLabel文本1秒?

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)

我希望我的错误消息临时显示在JLabel中,然后将文本设置回“”。但它看起来只是跳过了设置消息。我已经浏览了代码,发现它正在设置文本,但由于某种原因它没有显示。我甚至尝试过repaint()方法,但仍然一无所获。任何帮助都将不胜感激

以下是我所拥有的:

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链接是一个巨大的帮助。谢谢,垃圾上帝