当前位置: 首页 > 知识库问答 >
问题:

用JButton开始某件事,然后用同样的JButton暂停

房育
2023-03-14

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

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

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

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

共有2个答案

扶隐水
2023-03-14
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;
    }

}

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

东方建修
2023-03-14

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

 类似资料:
  • 我正在尝试制作一个计时器编程,它将一个变量添加到一个变量中,然后每秒钟将其输出到JTextField。然而,我似乎无法获得启动计时器并使其继续运行的按钮。它总是添加一个,但随后退出。我如何使它每当我按下开始按钮时,计时器就开始计数,直到我按下停止? 我是stackoverflow的新手,所以请排除任何不正确的格式

  • 问题内容: 我最近有一个关于如何在另一个类的主方法中打开登录面板的问题。因为我还没有在Swing中上过任何课(仅是基本的Java编程),所以我已经偶然发现了另一个问题。 我如何检测用户是否按下了JPanel中的按钮并使它执行某项操作。 例如:用户按下了登录-> if(textfield1.getText()==“ user”){打开另一个JFrame}->等等。 这是我的主要代码: 这是Login

  • 问题内容: 我正在尝试在JButton上创建自定义鼠标悬停事件。原因是我的JButton当前是图像,因此我必须删除所有边框和动画,而不能删除所有边框和动画。所以我这样做: 这非常适合仅显示图像,并且按钮实际上可以正常工作。我想知道是否有任何预建方法可以做到这一点,或者我将如何学习做自己想做的事情。 更具体地说,当我将鼠标悬停在上方时,我希望图像做的只是使其变得更大一点。 到目前为止,我已经尝试过这

  • 我希望在单击时回忆一个JButton的值,即当用户单击一个JButton时,该JButton的值(是一个字母)将写入JLabel。用户将单击多个按钮,因此,需要存储和打印多个值。最后,用户将单击一个按钮,保存所有接收到的JButton值的JLabel将被存储(显然是使用数组)。 这是我的JButton在代码中的样子: 模型。随机字母();是对另一个类的引用,其中“字母”是一个包含16个值的数组。我

  • 我正在尝试做一些非常简单的事情,在点击按钮时更改文本。 我似乎无法使用它,有人能告诉我添加ActionListener的正确位置吗? 主要类别 atmGUI类 编辑: 这是产生的错误 类型new ActionListener(){}必须实现继承的抽象方法ActionListener.actionPerform(ActionEvent)

  • 介绍 (Introduction) JButton类是一个按钮的实现。 此组件具有标签,并在按下时生成事件。 它也可以有一个图像。 Class 声明 (Class Declaration) 以下是javax.swing.JButton类的声明 - public class JButton extends AbstractButton implements Accessible