java - label.setVisible(true) 在进程完成之前不会执行任何操作

标签 java swing swingworker event-dispatch-thread

我有一个包含几个按钮的对话框。单击特定按钮时,ActionListener 会启动一个需要几秒钟才能完成的过程。在此期间我想向用户提供一些反馈。为了采取简单的方法,我在对话框“计算...”中有一个标签,该标签最初是不可见的。代码段如下所示

button_OpenHoursReport.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        lbl_Computing.setVisible(true);
        new runAndRenderReport();
        RunAndRenderReport.main(null);
        lbl_Computing.setVisible(false);
    }
});

问题是,在 RunAndRenderReport 完成之前,lbl_Computing 文本不会变得可见。显然,这对用户来说没有太大帮助。不知道从这里该去哪里。这与线程有关吗?如果是这样,我可以使用一些关于如何开始的指导。

最佳答案

actionPerformed() 在 GUI 线程 ( EDT ) 上执行,因此请避免对其执行密集操作。而是使用 SwingWorker .

参见How SwingWorker works .

关于java - label.setVisible(true) 在进程完成之前不会执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143642/

相关文章:

Java - SwingWorker - 我们可以从另一个 SwingWorker 而不是 EDT 调用一个 SwingWorker

java - 在开始另一个任务之前等待一个任务在 Java 中完成

java - 从java程序运行git命令的问题

未显示 Java 按钮?

java - Cassandra hector loader 应用内存不足

Java 缺少按钮文本

java - 用于 String.format() 的 Java 中 %ld 的 C++ 等价物

java - 高级应用程序中的 JButton 如何工作?

java - 在屏幕上的任何位置隐藏 Java 光标

java - JProgressBar 不更新