Цифровые часы, с настройкой времени

Я написал 2 класса. В первом создается диалоговое окно с 3-мя JTextField, в которые нужно вписать час, минуту и секунду. Во втором классе открывается окно Jframe, выводящее сами часы в формате чч:мм:сс. Проблема заключается в том, что часы выводятся на экран только один раз, а не каждую секунду с изменениями. Внизу я прикрепил написанный код, помогите пожалуйста.
Первый класс:

    package Clock;

import javax.swing.*;

import javax.swing.plaf.FontUIResource;

import javax.swing.text.StyleContext;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Locale;

import javax.swing.WindowConstants;

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

public class Dialog extends JFrame {

    public static int clock1;
    public static int clock2;
    public static int clock3;
    private JLabel TextHour;
    private JLabel TextMinute;
    private JLabel TextSecond;

    private JTextField hour;
    private JTextField minute;
    private JTextField second;

    private JButton OKButton;
    private JPanel rootPanel;
    JLabel result = new JLabel("0");
    int x = 0;
    boolean programIsFail = false;

    public Dialog() {
        setSize(400, 250);
        setContentPane(rootPanel);
        setVisible(true);

        OKButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                try {
                    clock1 = Integer.parseInt(hour.getText());
                } catch (NumberFormatException e1) {
                    programIsFail = true;
                }

                result.setText(String.valueOf(2 * clock1));
                try {
                    clock2 = Integer.parseInt(minute.getText());
                } catch (NumberFormatException e1) {
                    programIsFail = true;
                }
                result.setText(String.valueOf(2 * clock2));

                try {
                    clock3 = Integer.parseInt(second.getText());
                } catch (NumberFormatException e1) {
                    programIsFail = true;
                }
                result.setText(String.valueOf(2 * clock3));

                if (clock1 < 0) {
                    programIsFail = true;
                } else {
                    if (clock1 > 23) {
                        programIsFail = true;
                    }
                }

                if (clock2 < 0) {
                    programIsFail = true;
                } else {
                    if (clock2 > 59) {
                        programIsFail = true;
                    }
                }

                if (clock3 < 0) {
                    programIsFail = true;
                } else {
                    if (clock3 > 59) {
                        programIsFail = true;
                    }
                }
                if (programIsFail == true) {
                    JOptionPane.showMessageDialog(rootPanel, "Некорректный ввод!");
                    new Dialog();
                } else {
                    dispose();
                    Clock c = new Clock();
                    c.Clock1();
                }
                dispose();
            }
        });


        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

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

И Второй:

    package Clock;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.Timer;

import javax.swing.WindowConstants;



public class Clock {

    public static void main(String[] args) {

        new Dialog();

    }
    public static void Clock1(){

        JFrame f = new JFrame();

        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        DigitalClock myClock = new DigitalClock();

        f.add(myClock);

        f.pack();

        f.setVisible(true);

    }

    static class DigitalClock extends JPanel {

       String stringTime;

        int hour, minute, second;

        String correctionHour = "";

        String correctionMinute = "";

        String correctionSecond = "";

        public void setStringTime(String xyz) {

            this.stringTime = xyz;

        }

        public int findMinimumBetweenTwoNumbers(int a, int b) {

            return (a <= b) ? a : b;

        }

        DigitalClock() {

            Timer t1 = new Timer(1000, new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    second++;

                    if (second == 60) {

                        second = 0;

                        minute++;

                    }

                    if (minute == 60) {

                        minute = 0;

                        hour++;
                    }
                    if (hour == 24) {
                        hour = 0;
                        minute = 0;
                        second = 0;
                    }
                    setStringTime(correctionHour + hour + ":" + correctionMinute+ minute + ":" + correctionSecond + second);
                    repaint();
                    new DigitalClock();
                }
            });
            t1.start();
        }
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            hour = Dialog.clock1;
            minute = Dialog.clock2;
            second = Dialog.clock3;

            if (hour < 10) {
                this.correctionHour = "0";
            }
            if (hour >= 10) {
                this.correctionHour = "";
            }

            if (minute < 10) {
                this.correctionMinute = "0";
            }
            if (minute >= 10) {
                this.correctionMinute = "";
            }

            if (second < 10) {
                this.correctionSecond = "0";
            }
            if (second >= 10) {
                this.correctionSecond = "";
            }
            setStringTime(correctionHour + hour + ":" + correctionMinute+ minute + ":" + correctionSecond + second);
            g.setColor(Color.BLACK);
            int length = findMinimumBetweenTwoNumbers(this.getWidth(),this.getHeight());
            Font myFont = new Font("SansSerif", Font.PLAIN, length / 5);
            g.setFont(myFont);
            g.drawString(stringTime, (int) length/6, length/2);
        }
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }
    }
}

Подозреваю, что ошибка где то во втором классе, но не знаю где. Заранее спасибо за помощь


Ответы (0 шт):