【问题标题】:Java - using thread with GUIJava - 使用带有 GUI 的线程
【发布时间】:2011-08-13 10:34:00
【问题描述】:

当我在单击按钮 2 秒后尝试更改按钮颜色时,我的 GUI 出现问题。我想要做的是单击一个白色方形按钮,然后出现一种颜色,2 秒后我希望它恢复到原来的颜色(白色)。如何做到这一点?

我的点击代码:

cards[index].setBackground(cards[index].getTrueColor());
try
{
    Thread.sleep(2000);
    cards[cardPos.get(0)].setBackground(Color.white);
}
catch(Exception e) {}

所以这又回到了白色,但在一个实例中,不会等到几秒钟。 真的很感谢这里的一点帮助。 谢谢!

【问题讨论】:

  • 你需要说明你使用的是什么GUI框架。是 Swing(桌面)、Android(手机)还是 GWT(网站)?

标签: java multithreading user-interface


【解决方案1】:

这需要Timer 而不是Thread.sleep。您需要将计时器设置为延迟 2 秒,然后让它重置按钮的颜色。例如,在 Swing 中:

// onButtonClick
final Card card = cards[index];
card.setBackground(card.getTrueColor());
new Timer(2000, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // Change color back
        card.setBackground(Color.WHITE);
    } 
}).start();

【讨论】:

    【解决方案2】:

    您可以在 Android 中使用 AsynkTask 类。可以使用 onPreExecute 方法执行初始任务,然后等待 2 秒后更改按钮颜色,这可以在 doInBackground 方法中完成,您可以通过调用发布进度方法将结果发布到 UI,最后您可以使用 onPostExecute 方法。

    http://developer.android.com/reference/android/os/AsyncTask.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多