在Java中计数 - 文本字段仅显示最后一个值

Mar*_*tyn 0 java swing counter counting event-dispatch-thread

我在java中模拟处理器计数器时遇到了问题.我想计算例如0到6,并在文本字段中显示计数(0,1,2,3,4,5,6)的当前值.当我点击"计数"按钮时,我的程序冻结片刻,在文本字段中计数后,我只能看到数字6.我想在计数期间看到其他数字.这是我的代码的一部分:

for (int b=0; b<30; b++)
        {
           counter2.Count();
           try {
                    Thread.sleep(300);
                } catch(InterruptedException e){}
           text6.setText("TEST" + counter2.MainReg); }
Run Code Online (Sandbox Code Playgroud)

我该怎么办?感谢你们对我的帮助.

nic*_*o_c 7

您需要将计算放在其中一个工作线程上.来自Oracle:

当Swing程序需要执行长时间运行的任务时,它通常使用一个工作线程,也称为后台线程.在工作线程上运行的每个任务都由javax.swing.SwingWorker的实例表示.SwingWorker本身就是一个抽象类; 您必须定义子类才能创建SwingWorker对象; 匿名内部类通常用于创建非常简单的SwingWorker对象.

这是您可以访问的链接,并了解如何执行此操作:

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html

以下是Oracle关于如何从SwingWorker类实现方法的示例.http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

由于您希望能够在流程发生时看到结果,因此您可以按照Oracle中的以下示例进行操作:http://docs.oracle.com/javase/tutorial/uiswing/concurrency/interim.html

编辑:正如mKorbel在下面的评论中所建议的那样,你也可以使用这里描述的Swing Timers:http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html