Java,如何正确启动作为JFrame的应用程序并在其中使用可启动和可暂停的线程?

时间:2013-03-28 00:14:41

标签: java multithreading swing jframe

我决定启动我的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安全退出时也退出线程。

首先,我是否安全地启动了这个帖子,我想做什么?如何在应用程序中正确安全地实现可以执行所述操作的另一个线程?

  • 即我想启动应用程序,单击切换按钮,线程以循环方式启动并继续执行相同的步骤,直到用户再次点击切换,此时它将停止执行循环并继续再次单击切换按钮。 (奖金,如何将线程执行重置到其循环的开头?)

我不是在寻找完整的代码或其他内容,如果可能的话,可能是伪代码中的一个简单示例,如果没有其他任何帮助的话。

1 个答案:

答案 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,并在你的动作监听器中将你的切换按钮设置为线程运行状态。

您的线程类必须进行编码,以便可以重新启动,暂停和停止。