Aurelien Mazurie
Wed, 27 Nov 2002 00:05:42 -0800
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.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 ;-(
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) ?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.
? Je ne comprends pas. Pourquoi mon thread initial (c'est à dire, justement ManageObj()) est-il bloqué ?Et ca bloque pendant ce temps.Normal puisque tu bloques le thread (avec la tache ManageObj).
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...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.