我正在使用带有 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();
添加回答
举报
0/150
提交
取消