java - 在排序运行时将值设置为一个 jLabel 和 textBoxes

标签 java swing event-dispatch-thread thread-sleep

public void QUICKSORT(int[] A, int p, int r)  {
if(p < r)    
 {
    q=PARTITION(A,p,r);
    labelPartitionPoint.setText("Partition point = "+q);
    Thread.sleep(3000);
    QUICKSORT(A,p,q-1);
    QUICKSORT(A,q+1,r);
  } 
}

最佳答案

如果您在外部线程中执行此操作,则必须使用 Swing 实用程序 invokeLater(或 invokeAndWait)安排 EDT 内 Swing 组件状态的更新。

public void QUICKSORT(int[] A, int p, int r)  {
if(p < r)    
 {
    q=PARTITION(A,p,r);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            lblPartitionPoint.setText("Partition point = "+q);
        }
    });
    Thread.sleep(3000);
    QUICKSORT(A,p,q-1);
    QUICKSORT(A,q+1,r);
  } 
}

关于java - 在排序运行时将值设置为一个 jLabel 和 textBoxes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737896/

相关文章:

java - 如何在 Java 中使用 BinarySearchTree 创建 add 方法?

java - 谷歌地图无法加载 map

java - 更改文本框颜色 - 应用程序。很冷

java - 从另一个线程而不是 Swing 中的事件调度线程泵事件

java - 如何为 Maven 命令行附加 VM 选项

java - EJB 3.1 依赖注入(inject)失败

java - 将可见设置为 false 然后再次设置为 true 后组件消失

java - 如何在 JFileChooser 中显示文件的自定义图标?

java - 在java中将按钮组件添加到java选项卡式 Pane

java - 即时重绘和验证