Question

J'ai un JButton que quand je clique dessus, je charger des données à partir d'une base de données + initialiser un JDialog qui a beaucoup de contrôles + remplissent ces contrôles avec les données chargées montrent alors que JDialog lent. Cela prend environ 3 à 5 secondes pour montrer enfin la JDialog, ce qui provoque le programme de geler une mauvaise manière.

J'ai créé un petit JDialog avec un JXBusyLabel de SwingX pour afficher une étiquette occupé pendant le chargement et l'initialisation de ces processus lents. Mais comment puis-je utiliser cette étiquette occupé JDialog dans l'EDT lors de l'initialisation de la boîte de dialogue lente?

Remarque: Le chargement des données de la db ne tarde pas, mais les lourds JDialog initialisation et de ses composantes les causes que le traitement lent

.
Était-ce utile?

La solution

  1. Afficher la boîte de dialogue occupé.

  2. SwingWorker faire toutes les tâches en cours d'exécution long en arrière-plan (base de données)

  3. Lorsque vous avez terminé, créer de grands dialogue avec les données de base de données (à l'intérieur SwingWorker.done (méthode))

  4. Hide dialogue occupé, grande boîte de dialogue affiche.

Autres conseils

Vous devriez mieux utiliser SwingWorker:

  1. créer le dialogue avec l'étiquette occupée, créer le travailleur swing
  2. démarrer le SwingWorker (il se charge de façon asynchrone des données DB, la préparation de commande pour la boîte de dialogue principal)
  3. dans la méthode fait () de SwingWorker, cachez votre première petite boîte de dialogue et de montrer la principale
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top