Próbuję utworzyć zegar cyfrowy za pomocą wątku, ponieważ wydaje mi się to logiczne, jak można to zrobić. Nie jestem pewien, czy robię to we właściwy sposób, ale to, co miałem na myśli, to stworzyć początkowy bieżący czas systemowy za pomocą konstruktora JFrame i wyświetlić go jako tekst za pomocą etykiety. W konstruktorze następnie utworzę obiekt wątku, za pomocą którego zaktualizuję czas.Tworzenie zegara cyfrowego za pomocą wątku
Trochę się zmagając i liczyłem na jakąś radę, jak to zrobić dobrze.
setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE));
setBounds(50, 50, 200, 200);
JPanel pane = new JPanel();
label = new JLabel();
//Font localTime = new Font("Lumina", Font.BOLD , 24);
pane.add(label);
add(pane);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();
s = sdf.format(date);
label.setText(s);
setVisible(true);
runner = new Thread(this);
while(runner == null)
{
runner = new Thread(this);
runner.start();
}
To jest moja metoda run(), która aktualizuje zegar co sekundę.
public void run()
{
while(true)
{
try
{
Thread.sleep(1000);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();
s = sdf.format(date);
label.setText(s);
}
catch(Exception e){}
}
Główna metoda.
public static void main(String[] args)
{
new DigitalClock().setVisible(true);
}
Z czym szczególnie się zmagasz? Wygląda również na to, że runner nigdy nie będzie miał wartości NULL, ponieważ tworzysz instancję i przypisujesz do niej obiekt Thread, tuż przed sprawdzeniem twojej wartości while (runner == null). Och i +1 czysto za rzadkość zobaczenia pytania o pracę domową, które faktycznie było próbowane zanim zapytasz tutaj :) –