0

我不知道该怎么做,但我希望我的 JButton 在按下它时开始运行一个方法,然后在我再次单击它时暂停该方法。此外,该方法应连续运行。现在,我的按钮不会暂停和启动,也不会连续运行。

private JButton playButton = new JButton("Play!");
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
     ?????
} 

我知道我的问题的答案在那里,但我的尝试刚刚以一个牢不可破的 while 循环结束。

我问了别人,我被告知我必须在一个单独的线程中运行一些东西。问题是,我对线程一无所知。没有线程还有其他方法吗?

4

2 回答 2

0

实现一个连续运行的函数/方法,直到被外部信号告知停止......没有线程就很难做到。GUI 元素的事件处理程序本质上与应用程序逻辑在单独的线程上运行,因为如果两者同步运行(即按钮控件在能够再次接受单击事件之前等待完成某些处理)......这样应用程序会很烂。这是真事,哥们。

于 2013-05-30T17:16:27.093 回答
0
boolean running = false;
private JButton playButton = new JButton("Play!");
Thread stuff = new Thread(new RunningThread());
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
    if (!running) {
        stuff.start();
        running = true;
    }
    else {
        if (stuff.isAlive()) {
            stuff.stop();
        }
        running = false;
    }

} 

public class RunningThread implements Runnable {

    public RunningThread() {
    }

    @Override
    public void run() {
        //DO STUFF: You also want a way to tell that you are finished and that the next button press should start it up again, so at the end make a function like imDone() that sends a message to your page that changes running = false;
    }

}

像这样的东西应该工作。唯一的问题是这是停止而不是暂停。暂停会有点棘手,并且取决于函数内部到底发生了什么。

于 2013-05-30T18:48:45.257 回答