我需要创建一个从摇摆按钮按下开始的线程并等待来自 rs232 的输入,处理它并返回String
到我的变量。问题是如何做到这一点?
它应该是这样的:
String myOutputString = waitForInputThread();
或者,如果它可能在摆动面板中制作类似监听器的东西,如果这个waitForInputThread
发送中断会做一些事情(例如,如果获取 rs232 输入确实更新了中的项目列表JTable
)。
你能给我一些线索、教程、例子等吗?
我需要创建一个从摇摆按钮按下开始的线程并等待来自 rs232 的输入,处理它并返回String
到我的变量。问题是如何做到这一点?
它应该是这样的:
String myOutputString = waitForInputThread();
或者,如果它可能在摆动面板中制作类似监听器的东西,如果这个waitForInputThread
发送中断会做一些事情(例如,如果获取 rs232 输入确实更新了中的项目列表JTable
)。
你能给我一些线索、教程、例子等吗?
为避免阻塞事件调度线程(即更新 GUI 的线程),请启动一个新线程以与 RS232 交互。类SwingWorker
是一种选择,但您也可以轻松地使用普通线程。1阻塞 EDT 会导致您的 GUI 冻结,因此绝不能将它用于冗长的任务。
计算结果后,使用SwingUtilities.invokeLater()
. 这可确保在 EDT 上发生 GUI 更改。
1 我倾向于发现通过 an 执行的普通线程ExecutorService
更适合单元测试(因为您可以编写一个ExecutorService
立即执行的Runnable
,避免 JUnit 出现任何讨厌的线程问题)。