Java GUI секундомер не отображает время - PullRequest
0 голосов
/ 03 марта 2020

Я работаю над этим приложением секундомера уже довольно давно, но у меня возникли некоторые проблемы.

Проблемы

  1. секундомер не запускается должным образом, вероятно, из-за часового лога c
  2. секундомер не отображает числа в моей Java программе должным образом

Было бы неплохо, если бы кто-нибудь должен был помочь объяснить fl aws в моей программе и сказать мне, почему он не работает так, как мне бы хотелось. Большая помощь нужна и ценится, поэтому вот мой код.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Clock {

    private static void createWindow() {

        // Important
        final int windowWidth = 800; // Window width
        final int windowHeight = 300; // Window height
        // Clock variables
        boolean clockRunning = true; // When clock is running, this will be true
        int milliseconds = 0;
        int seconds = 0;
        int minutes = 0;
        int hours = 0;

        // Create JFrame
        JFrame frame = new JFrame(); // JFrame object

        // Create timer text
        JLabel timer = new JLabel("00:00:00");
        timer.setText("00:00:00");
        timer.setBounds(355, 100, 100, 40); // Button position

        // JButtons
        JButton startTimer = new JButton("Start the timer"); // Start timer button
        JButton stopTimer = new JButton("Stop the timer"); // Stop timer button

        // Event listeners

        startTimer.addActionListener(new ActionListener() // Start timer
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                System.out.println("Timer has started");
            }
        });

        stopTimer.addActionListener(new ActionListener() // Stop timer
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                System.out.println("Timer has stoped");
            }
        });

        // Clock logic
        if (clockRunning = true) {
            milliseconds = 0;
            seconds++;
        }

        if(milliseconds > 1000) {
            milliseconds=0;
            seconds++;
        }

        if(seconds > 60) {
            milliseconds=0;
            seconds=0;
            minutes++;
        }

        if(minutes > 60) {
            milliseconds=0;
            minutes=0;
            hours++;
        }

        timer.setText(" : " + seconds); // Milliseconds
        timer.setText(" : " + milliseconds); // Seconds
        timer.setText(" : " + minutes); // Minutes
        timer.setText("" + hours); // Hours

        // JButton Settings
        startTimer.setBounds(10, 100, 200, 30); // Button position
        stopTimer.setBounds(570, 100, 200, 30); // Button position

        // Frame Settings
        frame.setSize(windowWidth, windowHeight); // Window size
        frame.setLayout(null); // Frame position

        // Add
        frame.add(startTimer);
        frame.add(stopTimer);
        frame.add(timer);

        // Frame settings
        frame.setVisible(true); // Make frame visible
        frame.setResizable(false); // Disables maximize
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Allows the window to be closed
    }

    public static void main(String[] args) {
        createWindow();
    }
}

1 Ответ

2 голосов
/ 03 марта 2020

Секундомер не отображает числа в моей Java программе должным образом

timer.setText(" : " + seconds); // Milliseconds
timer.setText(" : " + milliseconds); // Seconds
timer.setText(" : " + minutes); // Minutes
timer.setText("" + hours); // Hours

Метод setText(…) заменяет существующий текст.

Итак приведенный выше код совпадает с:

timer.setText("" + hours); // Hours

Секундомер не запускается должным образом, вероятно, из-за часового лога c

Для секундомера вы потребуется использовать Swing Timer , чтобы вы могли обновлять текст с заданным интервалом.

См .: Программа зависает во время Thread.sleep () и с таймером для ознакомления с основами использования таймера.

...