Domanda

C'è un JTabbedPane Nel mio Altalena . Quando l'utente clicca su una scheda, il programma richiede un po 'per ottenere i dati ed elaborare i risultati, poi mostra i risultati nella scheda selezionata.

Come faccio a visualizzare una clessidra, o qualcosa di quell'effetto in modo che l'utente sa che è l'elaborazione dei dati? Per non fare clic sulla scheda di nuovo prima che venga completata esso lavoro.

È stato utile?

Soluzione

Un JProgressBar (possibilmente in modalità indetermiante) suoni destra - mettere che sulla scheda fino a quando i dati sono stati scaricati. Un'interfaccia utente ben progettato non dovrebbe obbligare l'utente ad attendere per le attività a lungo in esecuzione per completare e invece consentire loro di fare qualcosa d'altro mezzo.

Altri suggerimenti

Il modo più semplice è quello di chiamare solo setCursor sul componente appropriato (probabilmente la finestra di primo livello) con l'appropriato cursore .

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

E poi impostarlo indietro quando si è fatto.

component.setCursor(Cursor.getDefaultCursor());

setCursor (int) è deprecato. Questo è probabilmente un po 'più pulito:

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

Come le altre risposte menzionano, è possibile impostare un cursore di attesa, ma anche parlare di prevenire ulteriori clic del mouse. È possibile utilizzare una lastra di vetro per evitare clic su componenti fino a quando la lunga operazione è terminata. Oltre alla tutorial Sun sulla lastra di vetro , c'è un bel esempio a http://www.java2s.com /Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

lo farei come altri accennato

  • Modificare il cursore
  • Usa uno SwingWorker
  • Visualizza l'progressbar o un'immagine animata nel glasspane
  • Nascondere il glasspane quando il compito è completato
  • Ripristina il cursore predefinito
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top