Java 如何在JFrame出口上运行terminate命令?
我知道尝试编写终止线程的代码背后的基本原理,但我遇到了一点问题 我在JFrame GUI中有一个JButton,它启动了我试图制作动画的模拟。它在JButton的ActionPerformed代码中由Java 如何在JFrame出口上运行terminate命令?,java,multithreading,swing,Java,Multithreading,Swing,我知道尝试编写终止线程的代码背后的基本原理,但我遇到了一点问题 我在JFrame GUI中有一个JButton,它启动了我试图制作动画的模拟。它在JButton的ActionPerformed代码中由 new AnswerWorker().execute(); AnswerWorker类反过来扩展SwingWorker,以便在GUI仍处于活动状态时绘制动画帧 public class AnswerWorker extends SwingWorker<String, Integer>
new AnswerWorker().execute();
AnswerWorker类反过来扩展SwingWorker,以便在GUI仍处于活动状态时绘制动画帧
public class AnswerWorker extends SwingWorker<String, Integer> {
protected String doInBackground() throws Exception
{
Threading threading = new Threading();
return null;
}
protected void done()
{
try {
JOptionPane.showMessageDialog(InputGUI.this, AMEC.unsuccesfulpercentage + "% of iterations had trucks that had to sleep over");
AMEC.unsuccesfulpercentage = 0;
}
catch (Exception e)
{
e.printStackTrace();
}
}
现在,在runsimulation()函数中,我初始化了一个JFrame,如果JFrame通过单击其关闭按钮关闭,我想终止运行模拟的线程。我该怎么做
编辑:上述所有代码都在包含所有my GUI元素的文件InputGUI.java中调用。runsimulation函数在我的主项目文件AMEC.java中
如何在JFrame出口上运行terminate命令
- 添加到JFrame,从
事件,您必须调用windowClosing
,然后调用JFrame.setVisible(false)
SwingWorker
结束终止当前JVM后,如果出现任何异常,则显示SwingWorker
,或者再次将JFrame显示回屏幕,需要更改JOptionPane
DefaultCloseOperation,以隐藏关闭时的操作
@Override
dispose(){
stopThread();
super.dispose();
}
我怎么称呼SwingWorker?我是调用实例InputGUI.AnswerWorker,还是直接引用SwingWorker?终止或中断该线程的语法是什么?@Martin这是一个问答网站,你似乎需要一位导师。投票以“太宽”结束。在dispose(){它告诉我“声明无效;返回类型必需”。有什么想法吗?我试过了,但现在它声称您不能在awt中重写dispose。Window,正如它所说的“尝试分配较弱的访问权限是公共的”public void dispose()一样;d在构造函数上,您需要调用方法JFrame.setDefaultCloseOperation(DISPOSE_on_CLOSE)啊,谢谢!最后,它说“找不到符号:方法stopThread”。如何引用正确的线程并终止它?
@Override
dispose(){
stopThread();
super.dispose();
}