Wow ! Ca marche maintenant =)
Par contre je n'arrive pas � comprendre pourquoi, ni o� �tait l'erreur.

Ce que j'ai maintenant, c'est un thread appell� apr�s la cr�ation des objets Swing, qui contient des instructions pour injecter des donn�es dans ces objets, + une instruction invokeLater() qui appelle... un autre thread (un Runnable) qui injecte les donn�es les plus grosses (celles destin�es au JTable). Bizarre ?

Je m'explique:

initComponents();
signalObject(obj);
> pack();
display();
Jusque la ca va.

Et la routine signalObject fait ceci:
 dataObj = obj; // OK
 SwingUtilities.invokeLater(new ManageObj(dataObj));
La ca ne va plus.

Pour finir, la routine ManageObj est un thread.
Certes mais il n'est jamais demarre ;-(
Pourquoi n'est-il jamais d�marr� ? Pourtant il l'est bien � un moment ou � un autre puisque les donn�es finissent par �tre charg�es, et sont affich�es dans les composants Swing.

En fait il faut faire:
  new ManageObj(dataObj).start();
Ok, ca c'est donc fait juste apr�s avoir cr�� les composants Swing.

et dans la m�thode run():
  for each data
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run() { add_to_frame(data); }
    });
Et donc l�, � l'int�rieur du Thread, j'impl�mente un Runnable ?? Pour chacune des donn�es � injecter en plus ? Que ce passe-t'il pour les instructions contenues dans le Thread (et non pas dans le Runnable qui y est inclu), et qui elles aussi injectent dans les composants Swing (de toutes petites quantit�s de donn�es, cependant) ?

En r�sum�, le Thread est-il r�ellement utile ? Ne peut-on pas appeller, juste apr�s avoir cr�� les composants Swing, directement des Runnable gr�ce � invokeLater() ? Ou le Thread qui les enveloppe a-t'il une fonction au niveau de la event queue qui assure que ces Runnable seront bien execut�s ?

Suivant ton type de composant, l'usage d'une methode fireXXX() du modele peut etre plus approprie.
Ah ! Je ne connaissais pas. Je vais regarder.

Et ca bloque pendant ce temps.
Normal  puisque tu bloques le thread (avec la tache ManageObj).
? Je ne comprends pas. Pourquoi mon thread initial (c'est � dire, justement ManageObj()) est-il bloqu� ?

Le pire c'est que j'ai d'autres frames qui fonctionnent avec d'autres donn�es et qui marchent.
Et que non: soit ce n'est pas le meme code, soit c'est tellement rapide que tu ne vois pas le delai.
Bah pourtant c'est exactement le m�me code (impl�ment� dans une classe m�re dont d�rivent les deux cas dont je parle), mais j'ai bien le comportement attendu, visible surtout lorsque j'affiche en m�me temps tout un tas de ces JInternalFrame: elles s'affichent, vides, puis progressivement les donn�es y sont inject�es. Remarque, il semble bien que je n'ai pas la main � ce moment... Mmm...

Aur�lien

Répondre à