java - 强制重新加载组件 Swing 上的更改

标签 java swing desktop-application

我编写了一个代码来从用户配置文件中删除 adobe 目录,我使用它远程连接到远程计算机。在此代码中,当文件被删除时,textArea 必须显示已删除文件的路径。在 System.out.println 中,它运行规则,但在递归函数结束之前不会更改 textArea。

我有这个代码。 (抱歉,我的翻译很初级)

private void RecursiveDel(String rute) {
        File tdel = new File(rute);
        if (tdel.isDirectory()) {
            for (File del : tdel.listFiles()) {
                RecursiveDel(del.getAbsolutePath());
            }
        }
        txtInform += "Removing: " + ruta + "\r\n";
        ActRes();
        tdel.delete();
        System.out.println(rute);
        if (tdel.exists()) {
            txtInforme += "File isn't deleted: \r\n" + ruta + "\r\n";
            ActRes();
            Correct = false;
        }
    }
    private void ActRes(){
        Thread act = new Thread(new  Runnable() {
            @Override
            public void run() {
                txtResult.setText(txtInforme);
            }
        });
        act.start();
    }

在递归函数起作用的同时,如何将已删除的文件显示到文本区域中?

最佳答案

it runs but it doesn't change the textArea until the recursive function ends.

正确,因为您的代码循环遍历所有目录并构建字符串,而不是尝试更新每个目录的文本区域。

相反,您应该使用 SwingWorker 并在找到目录时“发布”该目录。然后,每次您发布值时,文本区域都会更新。

阅读 Swing 教程中关于 Tasks That Have Interim Results 的部分有关此方法的示例。

关于java - 强制重新加载组件 Swing 上的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039239/

相关文章:

Java Galleria IO缩略图缩小纵横比公式

java - 在整个系统上听鼠标点击(不是在 JFrame 等上)

java - 使用 cardlayout 在面板之间切换时,JTextField 和按钮不会更新

wpf - 为什么从 WPF 更改为 Silverlight 4?

c# - 看门狗桌面应用程序的最佳方式是什么?

java - Android:我的异步方法有效吗?

java - Jax-rs 根据 Jackson 的请求更改序列化响应

java - Eclipse View 中的 GridBagLayout

java - 需要什么才能将 JPanel 和 JButton 转换为与 IOS 一起使用,以避免 “headless” 错误?

server - 桌面应用程序的客户端/服务器状态同步