单击按钮运行并暂停GUI后台线程

-1 java user-interface swing

我需要在我的Java GUI中运行后台线程,该线程仅在我单击按钮时运行,并在我再次单击该按钮时暂停.我不确定如何设置它,但我已经在我的构造函数中放置了一个线程,并且当我将特定布尔值设置为TRUE时,while循环设置为通过.一个按钮从设置此布尔值TRUE或FALSE切换.

我在这个GUI中的其他所有工作都很好.当我尝试调试线程时,它实际上是在我逐步完成线程时工作但当我尝试完全运行GUI时没有任何内容.GUI相当大,所以我要设置一部分构造函数和按钮的动作监听器.其余的代码是不必要的,因为它工作得很好.我需要知道我在做错了什么:

public BasketballGUI() {
    // certain labels and buttons
    Thread runningSim = new Thread() {
        public void run() {
            while(simRun) {
                // do stuff here
            }
        }
    };
    runningSim.start();
}

// other GUI stuff

// actionListener that should run the thread.
class SimButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent arg0) {
        if(!simRun) {
            simRun = true;
            sim.setText("Pause Simulator");
        }
        else if(simRun) {
            simRun = false;
            sim.setText("Run Simulator");
        }
        // other stuff in this actionListener
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

  1. 建立基于Swing的TimerActionListener将被反复调用.
  2. actionPerformed(ActionEvent)方法调用中repaint().
  3. Timer.start()用户单击时启动计时器()Start
  4. Timer.stop()用户点击时停止计时器()Stop

如果你不能从这个描述中得到它,我建议你发布一个你最好的尝试的SSCCE.


我以为我有一个'躺着'.试试这个工作的SSCCE,它使用在这个SSCCE中创建的图像.