Ich habe unlängst versucht eine Uhr zu programmieren. Das ganz funktioniert auch wunderbar:
Das ganze hat aber einen Schwerwiegenden Nachteil: Da die while-Schleife ja ständig durchlaufen wird verbraucht das Porgramm sämtliche zur Verfügung stehenden Systemessourcen. Wie kann ich das ändern? Kann man zum Beispiel sagen, dass die Schleife nur z. B. jede 1/10 sec durchlaufen werden soll? (soviel ich finden konnte ist wait() ja nur um auf andere threads zu warten, oder?).
Vielen Dank im Voraus
Code:
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
public class clock extends JFrame {
JPanel cont;
JLabel time;
Date datum;
String text;
String hnull;
String minnull;
String secnull;
public clock () {
super ("Clock");
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
datum = new Date(System.currentTimeMillis());
this.setVisible(true);
if (datum.getHours() < 10) {
hnull = "0";
}
else {
hnull = "";
}
if (datum.getMinutes() < 10) {
minnull = "0";
}
else {
minnull = "";
}
if (datum.getSeconds() < 10) {
secnull = "0";
}
else {
secnull = "";
}
time = new JLabel((hnull+datum.getHours()+":"+minnull+datum.getMinutes()+":"+secnull+datum.getSeconds()));
cont = new JPanel();
cont.add(time);
this.getContentPane().add(cont);
this.pack();
while (true) {
datum = new Date(System.currentTimeMillis());
if (datum.getHours() < 10) {
hnull = "0";
}
else {
hnull = "";
}
if (datum.getMinutes() < 10) {
minnull = "0";
}
else {
minnull = "";
}
if (datum.getSeconds() < 10) {
secnull = "0";
}
else {
secnull = "";
}
time.setText((hnull+datum.getHours()+":"+minnull+datum.getMinutes()+":"+secnull+datum.getSeconds()));
}
}
public static void main(String[] args) {
clock frame = new clock();
}
}
Vielen Dank im Voraus