gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:49:09 25 4
gpt4 key购买 nike

我编写了一个代码来从用户配置文件中删除 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com