J'ai une interface graphique et sur un événement click, j'appelle des requêtes de base de données pour générer plusieurs cartes. Je ne peux voir aucun graphique tant que tous les diagrammes ne sont pas complétés, cela signifie qu'il y a un problème avec les composants de l'interface graphique qui se déplacent vers le graphique suivant avant que le premier graphique soit complété et montre son contenu. Quelle pourrait être la raison possible et comment éviter un tel problème?Java Swing - Bloc d'interface utilisateur
Répondre
Il n'y a aucun problème avec les composants. Il y a un problème avec votre conception. Vous effectuez les requêtes de longue durée et les mises à jour des graphiques dans une seule méthode s'exécutent dans le thread d'envoi d'événement. Ce faisant, l'EDT est complètement bloqué et ne peut pas repeindre quoi que ce soit tant que toutes les requêtes n'ont pas été exécutées et que tous les diagrammes ont été générés.
Utilisez un thread d'arrière-plan pour exécuter les requêtes et générer un graphique dans l'EDT, chaque fois qu'une requête est terminée. La classe SwingWorker aide à faire cela. Lisez its API doc et the tutorial à propos de la simultanéité dans Swing.
Merci pour le commentaire. J'ai eu la même coupe. Veuillez trouver ci-dessous ce que je fais btnGenerateGraph.addActionListener (new ActionListener() {public void actionPerformed (ActionEvent arg0) {// Générer des graphes pour MYSQL mysqlGrpahGenerator.generateMYSQLGraph(); luceneGraphGenerator.generateLuceneGraph();}); Où voulez-vous que je change dans le code? – Jone
Donc, vous avez déjà lu le javadoc et le didacticiel auquel je me suis connecté? Sinon, lisez-les. Tout est expliqué ici. Si vous les avez déjà lus, relisez-les, car vous ne semblez pas avoir compris ce qu'ils ont expliqué. –
Eh bien, je l'ai rouge et je sais quel est le problème. Maintenant, je veux faire le changement dans mon code mais je ne comprends pas où je devrais mettre à jour le code. En fait, la méthode generateMYSQLGraph(); générer 8-10 graphiques et c'est comme si je dois utiliser courir 8-10 fois :( – Jone
- 1. Java Swing Threading Problème
- 2. en utilisant java swing
- 3. Java Swing design
- 4. Java swing close icon
- 5. Java Swing et JGoodies
- 6. Java Swing: Expanding TreeNode
- 7. Fenêtre Swing Java corrompue
- 8. prendre l'interface utilisateur Swing au niveau suivant?
- 9. Java Threads avec Swing UI
- 10. Java problèmes de minuterie swing
- 11. Java Swing - scintillement Canvas graphics
- 12. Java Swing JToolBar
- 13. Opérations sur Java Swing
- 14. Java Swing pour l'émulation
- 15. Java Swing 2D animation
- 16. Java Swing Thread Library
- 17. GoogleEarth dans Java Swing
- 18. java swing redimensionne
- 19. Java Eclipse swing Conception
- 20. Actions Java Swing anonymes
- 21. Java Swing GridLayout étiré?
- 22. Java swing jLayeredPane
- 23. Transitions d'éléments Java Swing
- 24. Java swing combobox actionListner
- 25. Java Swing question GridLayout
- 26. Java Swing JButton
- 27. Java Swing Text Editor
- 28. Java swing - mauvaise taille
- 29. Java Swing arrangement JInternalFrames
- 30. Propriétés Java Swing (addPropertyChangeListener)
Pouvez-vous montrer du code? – Jonas