slave
ich möchte dasein jlabel den vortschritt in einem thread anzeigt, und oh wunder, es will mir nicht glücken
der timer läuft brav sekunde für sekunde bis er nicht mehr gebraucht wird...
(multi ist eine membervariable, sec und sekunden eben so, zeit ist das betreffende label)
wie bringe ich das elende jlabel dazu sich zu andern während der thread läuft?
entnervte grüße^^
ich möchte dasein jlabel den vortschritt in einem thread anzeigt, und oh wunder, es will mir nicht glücken
der timer läuft brav sekunde für sekunde bis er nicht mehr gebraucht wird...
(multi ist eine membervariable, sec und sekunden eben so, zeit ist das betreffende label)
Java:
@Action
public void montecarlo() {
nachricht.setText(ls);
getIndex();
timer = new Timer();
Thread start = new Thread(new MonteStart());
start.start();
timer.schedule(new Zeigezeit(), 1000, 1000);
try {
start.join();
} catch (InterruptedException ex) {
Logger.getLogger(Futterberechnung4View.class.getName()).log(Level.SEVERE, null, ex);
}
timer.cancel();
setFeld();
if (indikator == true) {
if (false == prüftNullerArray(multi)) {
nachricht.setText(ls);
eingabe();
} else {
nachricht.setText("monte carlo is fertig & kein ergebnis gefunden!");
eingabe();
}
}
}
class MonteStart implements Runnable {
public void run() {
multi = Zentrale.montecarlo();
}
}
class Zeigezeit extends TimerTask {
int i = 0;
public void run() {
// System.out.println("timer arbeitet");
sec = Integer.valueOf(i).toString();
new SetzeZeitLabel().execute();
i++;
}
}
class SetzeZeitLabel extends SwingWorker<String, String> {
@Override
public String doInBackground() {
//gibt brav und pünktlich den String sec aus
System.out.println(sec);
return sec + sekunden;
}
@Override
protected void done() {
try {
//es wird nur die letzte sekunde ausgegeben, die zeit spanne um welche es geht, wird aber nicht angezeigt
zeit.setText(get());
} catch (Exception ignore) {
}
}
}
entnervte grüße^^