Frage

Es gibt eine JTabbedPane In meinem Schaukel Programm. Wenn der Benutzer klickt auf einem Tab, das Programm dauert eine Weile, um die Daten zu erhalten und die Ergebnisse zu verarbeiten, dann zeigt die Ergebnisse in dem ausgewählten Registerkarte.

Wie kann ich eine Stunde Glas anzuzeigen, oder etwas dieser Effekt , so dass Benutzer weiß, ist es der Datenverarbeitung? Nicht auf dem Registerkarte wieder klicken, bevor sie es Job beendet ist.

War es hilfreich?

Lösung

JProgressBar (möglicherweise in indetermiante-Modus) Töne rechts - setzen, dass auf dem Registerkarte, bis die Daten abgerufen wurden. Eine gut gestaltete Benutzeroberfläche sollte nicht zwingen den Benutzer warten lang laufende Aufgaben zu erledigen und stattdessen damit sie etwas anderes dazwischen tun.

Andere Tipps

Der einfachste Weg ist, einfach Aufruf setCursor auf der entsprechenden Komponente (wahrscheinlich das Fenster der obersten Ebene) mit dem entsprechenden Cursor .

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Und dann wieder eingestellt, wenn Sie fertig sind.

component.setCursor(Cursor.getDefaultCursor());

setCursor (int) ist veraltet. Dies ist wahrscheinlich ein bisschen saubere:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Wie die anderen Antworten erwähnt, können Sie einen Wartecursor gesetzt, aber Sie erwähnen auch zusätzliche Mausklicks zu verhindern. Sie können eine Glasscheibe verwenden Klicks auf Komponenten zu verhindern, bis die lange Operation beendet ist. Zusätzlich zu den Sun Tutorials auf der Glasscheibe gibt es ein schönes Beispiel unter http://www.java2s.com /Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

Ich würde als andere erwähnt

  • Ändern Sie den Cursor
  • Verwenden Sie ein Swingworker
  • Anzeige des progressbar oder ein animiertes Bild im Glasspane
  • Ausblenden des Glasspane, wenn die Aufgabe abgeschlossen ist
  • Stellen Sie die Standard-Cursor
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top