java - 在 Java Swing 中编码时出现延迟

标签 java swing user-interface

我正在使用 Java Swing 编写一个 GUI 应用程序。我只有 1 个问题,那就是我编写了一个大函数,单击按钮时会执行该函数。起初我将标签的值设置为“生成报告..”然后就在函数的“返回”部分之前我将标签的值设置为“完成生成报告”。实际发生的是标签的第一个设置没有生效。它们都在我完成函数调用后生效,因此最终结果只显示“完成生成报告”。

这是我使用的java代码:

 protected void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:

    try
    {
         jLabel6.setText("Generating Report");
         jProgressBar1.setVisible(true);
       generateReport(BillImportId.getText()); // This will take around 30 seconds to finish
    }
    catch (Exception e)
    {
      System.out.println("Exception occured: " + e);
    }
    }//GEN-LAST:event_jButton2ActionPerformed

最佳答案

将对 generateReport 的调用移动到 SwingWorker 的方法 doInBackground 中。使用方法 processdone 更新您的 UI 元素。

另请查看 "Concurrency in Swing"

关于java - 在 Java Swing 中编码时出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205519/

相关文章:

java - 平移时创建无限网格

java - 查找出现次数最多的 map 值

java - 使用 javascript 调用 get 函数

java - 对多个 JPanel 使用 CardLayout 并且不显示任何内容

java - 在 Java Swing 中从原始图像生成 HiDPI ImageIcon

java - MVC设计问题

user-interface - 任何复杂对象状态管理的数学方法?

Java MigLayout 在行中固定等宽

java - 我应该如何将 JLabel 从 JFrame 中的一个 JPanel 拖动到同一 JFrame 中另一个 JPanel 中的 JTextField 上?

java - Node.getChildren() 是否可能不返回所有 child ?