【问题标题】:Force reload changes on a component JSwing在组件 JSwing 上强制重新加载更改
【发布时间】:2016-03-16 14:55:47
【问题描述】:

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

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

【问题讨论】:

    标签: java swing desktop-application


    【解决方案1】:

    它会运行,但在递归函数结束之前不会更改 textArea。

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

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

    请阅读 Tasks That Have Interim Results 上的 Swing 教程部分,了解此方法的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多