Question

Il y a un JTabbedPane Dans mon swing programme. Lorsque l'utilisateur clique sur un onglet, le programme prend un certain temps pour obtenir les données et traiter les résultats, montre ensuite les résultats dans l'onglet sélectionné.

Comment puis-je afficher un verre d'heure, ou quelque chose de cet effet de sorte que l'utilisateur sait qu'il traitement des données? Ne pas cliquer sur l'onglet à nouveau avant qu'il ne se termine travail.

Était-ce utile?

La solution

JProgressBar (éventuellement en mode indetermiante) sonne juste - mettre cela sur l'onglet jusqu'à ce que les données ont été extraites. Une interface bien conçue ne devrait pas obliger l'utilisateur à attendre pour les tâches courantes à long pour compléter et au lieu de leur permettre de faire quelque chose d'autre inbetween.

Autres conseils

La façon la plus simple est de simplement appeler setCursor sur le composant approprié (probablement la fenêtre de niveau supérieur) avec le approprié curseur .

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

Et puis réglez-retour lorsque vous avez terminé.

component.setCursor(Cursor.getDefaultCursor());

setCursor (int) est obsolète. Ceci est probablement un peu plus propre:

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

Comme les autres réponses mentionnent, vous pouvez définir un curseur d'attente, mais vous mentionner également éviter les clics de souris supplémentaires. Vous pouvez utiliser une vitre pour éviter les clics sur les composants jusqu'à ce que la longue opération est terminée. En plus de la tutoriels Sun sur la vitre , il y a un bel exemple http://www.java2s.com /Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

Je voudrais que d'autres mentionné

  • Changer le curseur
  • Utilisez un SwingWorker
  • Afficher la barre de progression ou une image animée dans le GlassPane
  • Masquer la GlassPane lorsque la tâche est terminée
  • Restaurer le curseur par défaut
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top