Hi,
die Suchfunktion verriet mir, dass das Thema eigentlich ausgelutscht ist, aber ich hab anscheinend trotzdem noch n 1,5m Brett mittem IM Kopf.
Ich habe eine separate Timer Klasse, die einfach von 0 bis xxx zählt und dies gemäß einer Variable schneller oder langsamer tut. Funktioniert problemlos...
Dazu hab ich jetzt eine andere Klasse, die von JPanel erbt und in der ich eine fiktive Uhr anzeigen will, die sich entsprechend dem Timer aktualisieren soll.
So kann´s natürlich nich gehen, weil der Text fürs Label nur über den Konstruktor gesetzt wird, aber wie würde man das in dem Kontext am besten realisieren? MUSS ich die Klasse, die das zu aktualisierende Label beinhaltet auch als eigenen Thread implementieren? Geht´s vielleicht über irgendnen Listener? Oder bin ich einfach verpeilt...
MfG
PeFro
die Suchfunktion verriet mir, dass das Thema eigentlich ausgelutscht ist, aber ich hab anscheinend trotzdem noch n 1,5m Brett mittem IM Kopf.
Ich habe eine separate Timer Klasse, die einfach von 0 bis xxx zählt und dies gemäß einer Variable schneller oder langsamer tut. Funktioniert problemlos...
Dazu hab ich jetzt eine andere Klasse, die von JPanel erbt und in der ich eine fiktive Uhr anzeigen will, die sich entsprechend dem Timer aktualisieren soll.
Code:
public class SimClock extends Thread{
private boolean running = true;
private int speed = 1000;
private int number;
public void run(){
number = 0;
while (true) {
if (running) {
incNumber(1);
try {
sleep(1000 / speed);
} catch ( InterruptedException ie) {
//
}
}
}
}
public synchronized int getNumber() {
return number;
}
public synchronized void setNumber(int number) {
this.number = number;
}
public synchronized void incNumber(int number) {
this.number += number;
}
public synchronized boolean isRunning() {
return running;
}
public synchronized void setRunning(boolean running) {
this.running = running;
}
public synchronized int getSpeed() {
return speed;
}
public synchronized void setSpeed(int speed) {
this.speed = speed;
}
}
Code:
public class SimBar extends JPanel{
private Gui gui;
private JLabel jLabel;
private SimClock simClock = new SimClock();
SimBar(Gui gui) {
this.gui = gui;
simClock.start();
setBackground(Color.lightGray);
this.setBorder(BorderFactory.createMatteBorder(1,0,1,0,Color.black));
setLayout(new BorderLayout(1,1));
jLabel = new JLabel("Uhrzeit: "+simClock.getNumber());
add(jLabel,BorderLayout.EAST);
}
}
So kann´s natürlich nich gehen, weil der Text fürs Label nur über den Konstruktor gesetzt wird, aber wie würde man das in dem Kontext am besten realisieren? MUSS ich die Klasse, die das zu aktualisierende Label beinhaltet auch als eigenen Thread implementieren? Geht´s vielleicht über irgendnen Listener? Oder bin ich einfach verpeilt...
MfG
PeFro