Я пытаюсь создать программу таймера, которая добавляет единицу к переменной, а затем выводит ее в JTextField каждую секунду. Тем не менее, я не могу получить кнопку, чтобы запустить таймер и продолжить его работу. Он всегда добавляет единицу, но затем завершает работу. Как мне сделать так, чтобы всякий раз, когда я нажимаю кнопку запуска, таймер начинает отсчет, пока я не нажму кнопку «Стоп»?

// creates timer
private Timer count;


public static void main (String[] args) {
    //inits new timer and GUI
    timer frame = new timer();
    frame.setSize(400,150);
    frame.createGUI();
    frame.setVisible(true);
}

//adds start to window
start = new JButton("Start Timer");
    window.add(start);
    start.addActionListener(this);

//actionPerformed class
public void actionPerformed(ActionEvent event) {


    if(event.getSource() == start) {
        min1.setText(Integer.toString(time / 60));
        sec1.setText(Integer.toString(time % 60));
        time++;
        }
    else {
        time++;
    }

Я новичок в stackoverflow, поэтому извините за неправильные теги формата

-1
Stefan Filip 10 Ноя 2017 в 05:56

1 ответ

Лучший ответ

Вот код, в котором таймер запускается кнопкой, а также останавливается кнопкой.

import javax.swing.*;
import java.awt.event.*;

class Example implements ActionListener {
    Timer timer;
    int count=0;
    JButton startButton;
    JButton stopButton;
    JLabel countLabel;
    JFrame frame;
    JPanel contentPane;

    public Example() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        contentPane = new JPanel();
        startButton = new JButton("Start");
        startButton.addActionListener(this);

        stopButton = new JButton("Stop");
        stopButton.addActionListener(this);

        countLabel = new JLabel("0");

        contentPane.add(startButton);
        contentPane.add(countLabel);
        contentPane.add(stopButton);

        ActionListener listener = new ActionListener() {

                    public void actionPerformed(ActionEvent e) {
                            count++;
                countLabel.setText(count+"");
                    }
                };
        timer = new Timer(100,listener);
        frame.setContentPane(contentPane);
        frame.pack();
        frame.setVisible(true);

    }

    @Override 
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == startButton) {
            timer.start();
        }
        if(e.getSource() == stopButton) {
            timer.stop();
        }
    }
    public static void main(String args[]) {
        new Example();
    }
}       
1
user8301220user8301220 10 Ноя 2017 в 04:25