2017-05-30 3 views
0

J'ai un jinternalframe appelé screenRole, ce cadre contient des tables qui chargent des informations à partir d'une base de données, il faudra un certain temps pour que l'internalframe soit affiché car juste après avoir appelé le setvisible méthode Im appelant également loadtb (qui se connecte aux bases de données et tire les données) Ce dont j'ai besoin est d'afficher le cadre d'abord et ensuite charger les tables. Il affiche actuellement le cadre une fois qu'il a tiré les informations de la DB.montrant jinternalframe avant de charger les données des jtables dessus

J'ai essayé beaucoup de choses pour montrer le cadre d'abord (toutes // les lignes de commentaire dans le code) en vain.

Une autre suggestion?

RoleEng screenRole;

 screenRole = new RoleEng(); 
     desktop.add(screenRole); 
     screenRole.setVisible(true); 
     //screenRole.show(); 
     // screenRole.setFocusable(true); 
     //desktop.revalidate(); 
     //desktop.repaint(); 
     //JOptionPane.showMessageDialog(null, "Test"); 
     screenRole.loadtb(this.idf,rcode);** 
     //screenRole. (this.idf,rcode); 
+0

La seule chose qui a fonctionné jusqu'ici est le showMessageDialog, mais je ne veux pas qu'un MessageDialog s'affiche avant l'internalframe mais au moins cela l'a fait apparaître avant de charger l'information de la DB – PCA

+1

N'ajoutez pas de commentaires. Afficher toutes les informations pertinentes dans la question de sorte qu'il se trouve dans un seul endroit. – camickr

Répondre

2

Vous pouvez utiliser un SwingWorker pour charger les données dans un Thread séparé. Ensuite, lorsque les données sont chargées, vous pouvez utiliser la méthode done() du SwingWorker pour mettre à jour les données de la table.

Lisez la section du tutoriel Swing sur Worker Threads and SwingWorker pour plus d'informations et des exemples de travail pour vous aider à démarrer.