Hallo!
vollgendes Problem...
In einem JComboBox wähle ich verschiedene Objekte. Bei jeder neuen Auswahl soll der Dataupdater gestoppt werden und ein neuer (mit neuem Objekt aus der ComboBox) gestartet werden.
Irgendwie klappt das nicht so wie ich es möchte.
Beim Programmstart läuft alles super und der Updater aktualisiert brav alle 3 sekunden die Daten, hier ist verlauf:
sobald ich aber ein neues Objekt auswähle passiert vollgendes:
Kann bitte jem helfen ?
Danke schon mal!
vollgendes Problem...
In einem JComboBox wähle ich verschiedene Objekte. Bei jeder neuen Auswahl soll der Dataupdater gestoppt werden und ein neuer (mit neuem Objekt aus der ComboBox) gestartet werden.
Irgendwie klappt das nicht so wie ich es möchte.
HTML:
schleife
updated
Warte: 3000 ms.
schleife
updated
Warte: 3000 ms.
schleife
updated
Warte: 3000 ms.
usw..
sobald ich aber ein neues Objekt auswähle passiert vollgendes:
HTML:
schleife
updated
Warte: 3000 ms.
schleife
updated
Warte: 3000 ms.
schleife
updated
ComboBox neues Objekt! selectedObjekt: Datenbank2
stop UPDATER!
schleife
schleife
updated
updated
Warte: 3000 ms.
schleife
Warte: 3000 ms.
schleife
updated
updated
Warte: 3000 ms.
schleife
Warte: 3000 ms.
updated
schleife
updated
usw...
Kann bitte jem helfen ?
Danke schon mal!
Java:
public class UpdateController {
private boolean stop;
private DataUpdater updater;
...
public UpdateController(Gui gui, Connection conn, DataConverter converter,
Controller controller) {
this.gui = gui;
this.connection = conn;
this.converter = converter;
this.controller = controller;
}
public void startUpdate() {
updater = null;
updater = new DataUpdater();
updater.start();
}
public void stopUpdater() {
System.out.println("stop UPDATER!");
stop = true;
if(updater != null && updater.isAlive()){
updater.interrupt();
updater = null;
}
}
...
// INNERE KLASSE !!!!
public class DataUpdater extends Thread {
/**
*
*/
public DataUpdater() {
//
}
@Override
public void run() {
try {
stop = false;
while (!stop) {
System.out.println("schleife");
getData();
if (!stop && parseData()) {
System.out.println("updated");
update();
} else {
System.out.println("update failed");
}
if (stop){
break;
} else {
pause(updateRate - 1000);
}
}
System.out.println("Updater dead.");
} catch (BadConnectionException e) {
e.setComponent(gui);
e.message();
}
}
private void pause(long t) {
if (t > 0) {
try {
sleep(t);
System.err.println("Warte: "+ t +" ms.");
} catch (InterruptedException e) {
return;
}
}
}
}// DataUpdater
}