Hallo,
habe (mal wieder) ein "kleines" Problem:
Ich möchte nach einem Button Klick ein Label aktualisieren, einige andere Buttons sperren; dann den eigentlichen Arbeitsschritt ausführen und letzten Endes wieder die Buttons entsperren und das Label nochmal aktualisieren. Soviel zur Theorie, was ja eigentlich nicht allzu schwer sein sollte:
Um dies umzusetzten, verwende ich folgende Methoden:
Ein Aufruf sähe dann wie folgt aus:
Leider hat sich in diesem Fall, außer der Änderung des Maus-Cursors nichts getan... Bin dann mal darauf gekommen, dass es (vermutlich) nie zum neuzeichnen kommt, weil die ausgeführte Methode zu "rechenintensiv" ist... (Iterieren über eine Tabelle mit 50.000+ Zeilen)
Hab dann den Code der Methode in ein Runnable ausgelagert und erstelle beim Aufruf der Methode einen Thread mit dem entsprechenden Runnable. Anschliessend starte ich den Thread und warte mittels join darauf, dass er "fertig" ist und verlasse die Methode wieder.
Aber auch das hat leider nichts gebracht... Bin irgendwie ratlos. Hat jemand ne Idee, woran es liegen könnte, dass sich der Cursor, aber NICHT der Text des Labels sowie der Enabled Status der Buttons ändert?
habe (mal wieder) ein "kleines" Problem:
Ich möchte nach einem Button Klick ein Label aktualisieren, einige andere Buttons sperren; dann den eigentlichen Arbeitsschritt ausführen und letzten Endes wieder die Buttons entsperren und das Label nochmal aktualisieren. Soviel zur Theorie, was ja eigentlich nicht allzu schwer sein sollte:
Um dies umzusetzten, verwende ich folgende Methoden:
Code:
private void work(final String message)
{
labelActionValue.setText(message);
processButtons(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
private void done()
{
labelActionValue.setText("Keine");
processButtons(true);
setCursor(Cursor.getDefaultCursor());
}
private void processButtons (boolean enable)
{
buttonCheck.setEnabled(enable);
//...
}
Ein Aufruf sähe dann wie folgt aus:
Code:
private void executeClicked (java.awt.event.ActionEvent evt)
{
if(tableResult.getSelectedRowCount() > 0)
{
try
{
work("Alle markierten Zeilen checken");
rm.checkSelected(getSelectedRows());
}
finally
{
done();
}
}
else
{
MessageUtils.informationMessage(
"Diese Aufgabe kann nur ausgeführt werden, wenn wenigestens" +
" eine (oder mehrere) Zeile(n) markiert sind!",
"");
}
}
Leider hat sich in diesem Fall, außer der Änderung des Maus-Cursors nichts getan... Bin dann mal darauf gekommen, dass es (vermutlich) nie zum neuzeichnen kommt, weil die ausgeführte Methode zu "rechenintensiv" ist... (Iterieren über eine Tabelle mit 50.000+ Zeilen)
Hab dann den Code der Methode in ein Runnable ausgelagert und erstelle beim Aufruf der Methode einen Thread mit dem entsprechenden Runnable. Anschliessend starte ich den Thread und warte mittels join darauf, dass er "fertig" ist und verlasse die Methode wieder.
Aber auch das hat leider nichts gebracht... Bin irgendwie ratlos. Hat jemand ne Idee, woran es liegen könnte, dass sich der Cursor, aber NICHT der Text des Labels sowie der Enabled Status der Buttons ändert?