边框格式在thread.sleep()之前不要更新



希望我的第一个问题不会太明显或研究不好。以下代码来自Mouselistener的MouseClicked事件。我希望将边框颜色更改为绿色,以向用户展示他/她点击的内容,启动睡眠计时器,然后将其更改为黑色。不幸的是,更改仅发生在螺纹之后。目前,已评论回到黑色的变化,并且颜色的变化确实变为绿色(永久性)。如果没有评论,则没有可见的颜色更改。这里发生了什么?

谢谢

    JLabel myLabel = (JLabel) e.getSource();
    myLabel.setBorder(BorderFactory.createLineBorder(Color.green));
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    //myLabel.setBorder(BorderFactory.createLineBorder(Color.black));

如果您在事件中睡觉,则阻止其工作,即重新粉刷GUI并显示您刚刚设置的边框。您只是将整个GUI冻结2秒钟。

您需要使用摆动计时器,并将此计时器重置为2秒后将其重置为原始颜色。睡眠必须在另一个线程中进行,然后在EDT中更改边框。这就是摆动计时器为您所做的。

最新更新