我决定启动我的java应用程序的第3版,并想知道我是否以正确的方式启动应用程序。我之前问过并得到了许多不同的答案。
我刚刚开始使用netbeans Java应用程序,并在JFrame中绘制了所有组件。在我的第2版中,我正在启动该程序
代码:(到目前为止这是版本3)
public class theApp {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
final CLSuiteMain theMainFrame = new CLSuiteMain();
EventQueue.invokeLater
(
new Runnable()
{
@Override
public void run()
{
try {
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (UnsupportedLookAndFeelException ex)
{
Logger.getLogger(theApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {}
theMainFrame.setVisible(true);
}
}
);
}
}
我创建它是一个Windows应用程序,我希望能够在其中(安全地)启动一个线程,通过Robot类模拟用户操作。我希望能够允许用户按下CLSuiteMain对象上的切换按钮并启动和暂停此线程。当主JFrame安全退出时也退出线程。
首先,我是否安全地启动了这个帖子,我想做什么?如何在应用程序中正确安全地实现可以执行所述操作的另一个线程?
我不是在寻找完整的代码或其他内容,如果可能的话,可能是伪代码中的一个简单示例,如果没有其他任何帮助的话。
答案 0 :(得分:1)
即我想启动应用程序,单击切换按钮,线程以循环方式启动并继续执行相同的步骤,直到用户再次点击切换,此时它将停止执行循环并继续再次单击切换按钮。 (奖励,如何将线程执行重置到其循环的开头?)
确定。
创建所有GUI组件。您的JFrame必须设置这些方法。
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent event) {
exitProcedure();
}
});
退出程序方法如下所示。
public void exitProcedure() {
thread.stopProcessing();
frame.dispose();
System.exit(0);
}
您可以在包含切换按钮的JPanel中的任何位置创建新线程。线程实例应该是GUI数据模型的一部分。您可以将GUI数据模型的实例传递给所有视图组件。
你可以在切换按钮的动作监听器中启动你的线程,并在那里暂停你的线程。
对于你的奖金问题,你必须有另一个重新启动你的线程的常规JButton,并在你的动作监听器中将你的切换按钮设置为线程运行状态。
您的线程类必须进行编码,以便可以重新启动,暂停和停止。