为了账号安全,请及时绑定邮箱和手机立即绑定

使用 SwingWorker 发生异常后,即使值正确,线程也不会执行

使用 SwingWorker 发生异常后,即使值正确,线程也不会执行

鸿蒙传说 2022-11-02 10:23:30
我正在使用带有 JTextField 和 JButton 的 SwingWorker 创建一个 Java Swing 应用程序。在 SwingWorker 内部,我创建了 2 个线程(一个线程是显示带有消息的 JDialog,另一个线程是检查 JTextField 中输入的值是否为正确的整数)。我在单击 JButton 时正在执行这些线程。如果值为整数,将显示成功消息(单击该消息不会关闭主 JFrame)。如果它是字符串,则会抛出异常并显示错误消息(在这种情况下,我也不会关闭主 JFrame)。一旦异常消息关闭,即使我输入正确的整数值并单击 JButton,这次线程也不会执行。
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我认为您遇到的问题是您不能在同一个线程上调用 start 两次,这就是您再次按下按钮时发生的情况。

https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#start()

多次启动一个线程是不合法的。特别是,线程一旦完成执行就可能不会重新启动。

最简单的解决方案是在开始调用之前调用线程设置

myThread = new MyThread();
 myThread.startThreads();


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号