如何在GUI java中添加延迟时间

时间:2015-10-17 15:44:28

标签: java

所以我有一个大小为10的JButton数组,所有文本都包含#34; 7"内 例如我点击按钮[0],假设我想增加按钮[1] - [7]中的值(我已经这样做了)但是如何添加延迟时间以便我看起来像动画而不是我点击按钮[0],所有其他按钮的值立即改变。

我尝试使用我在堆栈溢出中找到的其他代码,例如thread.sleep(1000)和此链接

http://best-programming-tricks.blogspot.com/2011/07/how-to-make-loading-delay-time-in-java.html

当我在我的代码上尝试它时,GUI只会进入滞后然后更改值。它没有做我想做的事

谢谢

这是我的actionListener

的一个例子
buttons[0].addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent arg0) {
                 int i = Integer.parseInt(buttons[0].getText());
                 setValuetoZero(0);
                 int delay = 1000;
                    for(int a =1; a<= i; a++){
                        int getVal = Integer.parseInt(buttons[a].getText());
                        getVal++;
                        String newVal = Integer.toString(getVal);
                        buttons[a].setText(newVal);
                    }
                }

             });

1 个答案:

答案 0 :(得分:1)

您可以使用javax.swing.Timer。您为构造函数提供了一个以给定间隔调用的ActionLitener。你可以把它想象成一个隐藏的按钮,每隔一段时间按下一次。

http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html

睡眠导致滞后的原因是它导致运行GUI的线程进入睡眠状态。这意味着GUI在睡眠时无法响应输入。要使线程处于休眠状态,您需要启动另一个线程并处理将其对数据的访问权限与GUI同步,这对您来说可能比它的价值更麻烦。这就是Timer很好的原因。它不会中断GUI并在与GUI相同的线程中执行其ActionListener。