gpt4 book ai didi

java - jtextarea.settext()方法是否被缓冲?

转载 作者:行者123 更新时间:2023-12-01 16:00:34 27 4
gpt4 key购买 nike

我不是java开发人员,但我需要编写一个小程序来通过ftp上传文件(实际上,我是一名网络开发人员)。除了反馈消息的显示方式之外,一切正常。让我用一个例子来解释一下:

如果我在方法内部写了类似的东西(由点击事件控制)

//....
myJpanel.setText("Connecting to remote server");

//actually, it's surrounded by try-catch statement
myFtpObject.connect(); //this is taken from a third part package
myJpanel.setText("Connected")

当我尝试运行此代码时,连接已设置(连接后我上传文件没有问题),但在 Jpanel myJpanel 内,我立即读到“已连接”(尽管这需要几秒钟)连接),但我从未看到“连接到远程服务器”字符串。

在我看来,Jpanel setText 方法以某种方式进行缓冲。
如何实时显示消息?

(我尝试使用 System.out.println 进行测试,效果非常好!)
谢谢

最佳答案

if i wrote sometingh like that inside a method (controlled by a click event)

在事件监听器中执行的代码在 EDT 上执行。问题是长时间运行的任务阻塞了 Swing EDT。所以 GUI 永远没有机会重新绘制自己。

阅读 Swing 教程中关于 Concurrency 的部分获取更多信息和解决方案。基本的解决方案是为长时间运行的任务创建一个单独的线程。

这也是 System.out.println(..) 工作的原因,因为它在不同的线程上执行。

关于java - jtextarea.settext()方法是否被缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046491/

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