identifier un panel fantome qui n'apparait que dans le jdk1.4 [resolu]

identifier un panel fantome qui n'apparait que dans le jdk1.4 [resolu] - Java - Programmation

Marsh Posté le 05-05-2003 à 18:37:41    

je suis sur un projet depuis aujourd'hui.
 
Lorsaue le projet est lance avec le jdk 1.3 il marche, avec le 1.4 se supperpose a l'ecran un panel apparement fantome, sans rien dessus pour l'identifier.
 
j'ai mis avec la reflexion un moustelistener sur tous les panels connus du 'super' panel dans lequel le fantome apparait, mais il reste le seul a ne pas reagir aux clics.....
 
le fantome est toujours la et n'est pas un fils direct du super panel......
 
y a un moyen (en utilisant la reflexion j'imagine) de contacter tous les jpanel connus de l'appli pour leurs attribuer mon listener identificateur ????


Message édité par Feanor le 06-05-2003 à 16:00:50
Reply

Marsh Posté le 05-05-2003 à 18:37:41   

Reply

Marsh Posté le 05-05-2003 à 18:48:42    

Feanor a écrit :


 
y a un moyen (en utilisant la reflexion j'imagine) de contacter tous les jpanel connus de l'appli pour leurs attribuer mon listener identificateur ????


 
tu récupère le rootPane, et tu navigue avec ça :
http://java.sun.com/j2se/1.4.1/doc [...] mponents()
 
et un peu de instanceof (c'est du temporaire).
et en voiture simone.

Reply

Marsh Posté le 06-05-2003 à 08:42:53    

refile nous le code car g fait pas mal d'appli et les pannels fantome je connait pas!! Ca peu être intéréssant!  :??:  :pt1cable:  :kaola:

Reply

Marsh Posté le 06-05-2003 à 08:44:29    

il faut que tu utilises javax.swing.GhostBuster :D


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 06-05-2003 à 11:37:05    

lol les precedents je les avaient traques avec la reflexion....
 
c 10 fois plus pratiques et je prend tous les components merci
 
 
j'ai identifie le panel c un scrollpanel, mais j'arrive pas a trouver ou il est cree
 
les sources sont tres nombreuxm mais je peux poster la methode si y en a que ca interesse :
 

Code :
  1. static MouseListener mymouse = new MouseAdapter() {
  2.  public void mouseClicked(MouseEvent e) {
  3.      Component cp = (Component)e.getSource();
  4.      System.out.println("you clicked on " + cp);
  5.      System.out.println("is " + cp.getName());
  6.      System.out.println("is in " + cp.getParent() + "\n" );
  7.  }
  8. };
  9.     /**
  10.        Recursive
  11.        Each Container is scanned
  12.        each component is attached to mymouse
  13.     */
  14.     public void spyPanel(Container cont) {
  15. int limite=cont.getComponentCount();
  16. if (limite !=0) {
  17.     for (int i=0;i<limite;i++) {
  18.  Component comp = cont.getComponent(i);
  19.  String name = comp.getClass().toString();
  20.  System.out.println("listener added on " + name);
  21.  comp.addMouseListener(mymouse);
  22.  //si le conmponent est un container, le parcourir
  23.  if (comp instanceof Container) {
  24.      spyPanel((Container)comp);
  25.  }
  26.     }
  27. }
  28.     }

Reply

Marsh Posté le 06-05-2003 à 16:00:30    

j'ai trouve :
 
les concepteurs avaient faient un scrollpane qui rendait invisible tous ces fils a commencer par le JViewPort.
 
ils avaient surcharges la methode et ca marchait sans prob sous 1.3 : un scrollpane avec viewport insivisble ne s'affiche pas.
 
et la sous 1.4 il a fallu rajouter un appel a super.setVisible(bool) pour  completement le faire disparaitre.
 
 
 
 
pourtant j'avais lu les changements 1.3 -> 1.4 pour me donner des indices mais je n'ai rien trouve...

Reply

Marsh Posté le 06-05-2003 à 19:13:22    

cool le code... moi aussi j'adort la réflexion c puyissant et super jolie  :love:  :sol:

Reply

Marsh Posté le 06-05-2003 à 19:49:02    

artemice a écrit :

cool le code... moi aussi j'adort la réflexion c puyissant et super jolie  :love:  :sol:  


'tain il m'a fallu 3 heures pour trouver la "réflexion" dans le code. C'est le bout d'introspection du listener !
 
Faites gaffe, si ça ça vous fait bander, vous allez passer des nuits humides avec Smalltalk et Self !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed