有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我尝试使用在堆栈溢出中找到的其他代码,比如线程。睡眠(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) 个答案

  1. # 1 楼答案

    你可以用javax。摆动计时器。给构造函数一个ActionLitener,以便在给定的时间间隔内调用。你几乎可以把它想象成一个隐藏的按钮,它每隔一段时间就会被按下

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

    睡眠导致延迟的原因是它导致GUI运行的线程进入睡眠状态。这意味着GUI在睡眠时无法响应输入。要让线程进入睡眠状态,您需要启动另一个线程,并处理与GUI同步其对数据的访问,这可能会给您带来更多麻烦。这就是计时器好的原因。它不会中断GUI并在与GUI相同的线程中执行其ActionListener