problème avec JTabbedPane [Résolu]

problème avec JTabbedPane [Résolu] - Java - Programmation

Marsh Posté le 13-03-2003 à 18:11:00    

voilà, quand j'essaye d'afficher un composant Recherche de ma composition, qui dérive de JPanel, et qui contient un JScrollPane, voilà ce que j'ai :
 
http://membres.lycos.fr/starfox/tmp/tabbedPane2.jpg
 
jusque là rien d'étrange, mais quand j'essaye de le mettre dans un JTabbedPane, ben ça passe plus  :heink:  
 
http://membres.lycos.fr/starfox/tmp/tabbedPane1.jpg
 
voilà le code qui me génère ce tabbedPane :
 

Code :
  1. JPanel test = new JPanel();
  2. test.add(new JLabel("bozzo" ));
  3. test.add(new JLabel("le clown" ));
  4. JScrollPane jtest = new JScrollPane(test);
  5. tabbedPane.addTab("buzz",jtest);
  6. tabbedPane.addTab("recherche",recherchePane[0]);
  7. System.out.println("tabbedPane.getTabCount() = " + tabbedPane.getTabCount());


 
je plus étrange est que getTabCount() me retourne 2 :heink:  
 
vous savez d'où ça pourrait venir ?
 
merci
 
### EDIT  
 
dsl si les images s'affichent pas, mais fucking hébergeur inside [:augie]  
en gros, dans la première image, il y a un joli Panel de recherche (champ de recherche, bouton de mode avancé et tout le tralala)
dans la deuxième image, il y a un JTabbedPane avec un premier tab nommé "buzz" et qui affiche "bozzo le clown", mais il n'y a pas de deuxième tab...


Message édité par Predicator le 14-03-2003 à 15:35:17
Reply

Marsh Posté le 13-03-2003 à 18:11:00   

Reply

Marsh Posté le 13-03-2003 à 19:48:49    

tu as essaye d'afficher juste ton composant recherchePane[0], sans tab ?


---------------
get amaroK plugin
Reply

Marsh Posté le 13-03-2003 à 20:34:14    

pour le premier, oui...
 
 
pour la première image

Code :
  1. getGraphicContext().add(recherchePane[0]);


 
pour la seconde
 

Code :
  1. JPanel test = new JPanel();
  2. test.add(new JLabel("bozzo" ));
  3. test.add(new JLabel("le clown" ));
  4. JScrollPane jtest = new JScrollPane(test);
  5. tabbedPane.addTab("buzz",jtest);
  6. tabbedPane.addTab("recherche",recherchePane[0]);
  7. System.out.println("tabbedPane.getTabCount() = " + tabbedPane.getTabCount());
  8. getGraphicContext().add(tabbedPane);

Reply

Marsh Posté le 14-03-2003 à 01:01:26    

Ben, essaye de retirer des fonctionnalités de ton composants pour voir si c'est ça qui gène. Mais comme ça à l'intuition, moi y a rien qui me vient à l'idée


---------------
get amaroK plugin
Reply

Marsh Posté le 14-03-2003 à 09:49:25    

je vais essayer...
je finirai bien par trouver la solution, mais comme tous les problèmes que j'ai eu liés à Swing, je ne saurai jamais comment je l'ai résolu... :(

Reply

Marsh Posté le 14-03-2003 à 10:37:03    

C'est bizarre, ton truc!! Essaie ce bout de code là :
 
 

Code :
  1. import javax.swing.*;
  2. public class Test {
  3.     public static void main(String[] args) {
  4.         JPanel test = new JPanel(); 
  5.         test.setLayout(new BoxLayout(test, BoxLayout.Y_AXIS));
  6.         test.add(new JLabel("bozzo" )); 
  7.         test.add(new JLabel("le clown" )); 
  8.         test.add(new JLabel("est" )); 
  9.         test.add(new JLabel("vraiment" )); 
  10.         test.add(new JLabel("tres" )); 
  11.         test.add(new JLabel("drole" )); 
  12.         JScrollPane jtest = new JScrollPane(test); 
  13.         JPanel test2 = new JPanel();
  14.         test2.add(new JLabel("Et mon cul, c'est du poulet?" ));
  15.         JTabbedPane tabbedPane = new JTabbedPane();
  16.         tabbedPane.addTab("buzz",jtest); 
  17.        
  18.         tabbedPane.addTab("zavata", test2);
  19.        
  20.         System.out.println("tabbedPane.getTabCount() = " + tabbedPane.getTabCount()); 
  21.         JFrame frame = new JFrame("test" );
  22.         frame.getContentPane().add(tabbedPane);
  23.         frame.pack();
  24.         frame.show();
  25.     }
  26. }

 
 
et dis moi ce que ça donne...
 
Et...recherchePane[0], c'est quoi, comme truc??

Reply

Marsh Posté le 14-03-2003 à 11:18:42    

Code :
  1. Class RecherchePane
  2. java.lang.Object
  3.   |
  4.   +--java.awt.Component
  5.         |
  6.         +--java.awt.Container
  7.               |
  8.               +--javax.swing.JComponent
  9.                     |
  10.                     +--javax.swing.JPanel
  11.                           |
  12.                           +--AnnotClient.RecherchePane
  13. public class RecherchePane
  14. extends javax.swing.JPanel
  15. implements javax.swing.Scrollable
  16. Method Summary
  17. void createLayout()
  18.            
  19. javax.swing.JPanel getPanel()
  20.            
  21. java.awt.Dimension getPreferredScrollableViewportSize()
  22.           Partie Scrollable
  23. int getScrollableBlockIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
  24.            
  25. boolean getScrollableTracksViewportHeight()
  26.            
  27. boolean getScrollableTracksViewportWidth()
  28.            
  29. int getScrollableUnitIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
  30.            
  31. java.lang.String getTabName()
  32.            
  33. void launchSearch()
  34.            
  35. void load(int index)
  36.            
  37. void switchMode()
  38.            
  39. void traiterLink(javax.swing.event.HyperlinkEvent event)


 
voilà des infos sur ma classe RecherchePane
 
c'est un JPanel qui contient un JScrollPane.
ce JScrollPane contient un JPanel.
et le dernier JPanel contient tous les composants de la recherche
JTextField
plusieurs JButton
et d'autres trucs pour le mode avancé, mais il n'apparaissent pas à l'affichage au début.

Reply

Marsh Posté le 14-03-2003 à 11:22:42    

sur le RecherchePane
getPreferredSize() me retourne une valeur correcte
getSize() me retourne 0x0 :pt1cable:


Message édité par Predicator le 14-03-2003 à 11:22:59
Reply

Marsh Posté le 14-03-2003 à 11:29:43    

gfive a écrit :

C'est bizarre, ton truc!! Essaie ce bout de code là :
 
et dis moi ce que ça donne...
 
Et...recherchePane[0], c'est quoi, comme truc??


 
RAS, ça fonctionne correctement [:spamafote]  :cry:
 
voilà le code de la fonction createLayout() de la class RecherchePane :
 

Code :
  1. JPanel panel = new JPanel();
  2. panel.add(new JLabel("non, mon cul ne se mange pas" ));
  3. JScrollPane scrollPane = new JScrollPane(panel);
  4. scrollPane.getHorizontalScrollBar().setUnitIncrement(
  5.     (int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  6. scrollPane.getVerticalScrollBar().setUnitIncrement(
  7.     (int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  8. add(scrollPane);


 
et ça marche toujours pas :pfff:  
recherchePane[0].getPreferredSize() = java.awt.Dimension[width=161,height=29]
recherchePane[0].getSize() = java.awt.Dimension[width=0,height=0]


Message édité par Predicator le 14-03-2003 à 11:36:31
Reply

Marsh Posté le 14-03-2003 à 11:53:47    

bon, j'ai trouvé d'où vient le problème, mais j'ai toujours pas compris pourquoi ça foire
 

Code :
  1. recherchePane = new RecherchePane[nbRecherches];
  2. for (int i=0 ; i<nbRecherches ; i++){
  3.    recherchePane[i] = new RecherchePane(this,typeFormulaire);
  4. }
  5. RecherchePane temp = new RecherchePane(this,typeFormulaire);


 
quand j'ajoute recherchePane[0], ça marche pas, et quand j'ajoute temp, ça marche [:spamafote]  
quelqu'un sait pourquoi le tableau foire ?


Message édité par Predicator le 14-03-2003 à 11:54:08
Reply

Marsh Posté le 14-03-2003 à 11:53:47   

Reply

Marsh Posté le 14-03-2003 à 12:00:23    

Il serait pas null, des fois, ton recherchePane[0]???  
Enfin, normalement, si nbRecherches ne vaut pas 0, ça devrait marcher (donc, au passage, nbRecherches ne vaut pas 0, sinon, tu aurais un ArrayIndexOutOfBoundsException....
 
Et ton typeFormulaire, tu es sûr que ça marche comme il faut??
 
Ca m'intrigue, ton machin, parce que t'as pas l'air d'avoir fait d'erreur...Ou alors, comme souvent quand on se fait des noeuds au cerveau en cherchant un bug, t'as une grosse bourde de base sous le nez, et tu la vois pas! :D:D  
C'est pour ça, a la limite, fait péter plus de code (là au besoin : gfive@altern.org) : vu que je connais pas ton code, s'il y a un truc douteux qui te choque pas parce tu le vois tous les jours, je le verrai peut-être..


Message édité par gfive le 14-03-2003 à 12:06:27
Reply

Marsh Posté le 14-03-2003 à 12:05:23    

gfive a écrit :

Il serait pas null, des fois, ton recherchePane[0]???  
 
Fais un System.out.println("recherchePane[0] = "+recherchePane[0]);
 
pour voir...
 
 


 
bah non il est pas null, sinon j'aurais un NullPointerException en faisant un getPreferredSize() dessus [:spamafote]
 
j'ai essayé d'utiliser des ArrayList, ça foire aussi :pfff:

Reply

Marsh Posté le 14-03-2003 à 12:06:42    

Edit!! :D Sorry!

Reply

Marsh Posté le 14-03-2003 à 12:13:06    

si quelqu'un comprend pourquoi ce code marche :
 

Code :
  1. RecherchePane temp = new RecherchePane(this,typeFormulaire);
  2. tabbedPane.addTab(temp.getTabName(),temp);


 
et pas celui-ci :
 

Code :
  1. recherchePane = new ArrayList();
  2. for (int i=0 ; i<nbRecherches ; i++){
  3.    recherchePane.add(new RecherchePane(this,typeFormulaire));
  4. }
  5. for (int i=0 ; i<nbRecherches ; i++){
  6.    RecherchePane current = (RecherchePane) recherchePane.get(i);
  7.    tabbedPane.addTab(current.getTabName(),current);
  8. }


 
je suis preneur parce que là, je suis perdu :heink:

Reply

Marsh Posté le 14-03-2003 à 12:17:13    

Euuuh....Attends, tu as le code du constructeur que tu appelles comme ça :  
 
new RecherchePane(this,typeFormulaire)
 
Parce que le fait que ça marche pas dans une boucle, et qu'il y ait un "this" dans les arguments, ça m'inspire que ton problème pourrait être dans ce coin là, en fait!

Reply

Marsh Posté le 14-03-2003 à 12:20:32    

Code :
  1. RecherchePane(InterfaceApplet ref, TypeFormulaire type){
  2.         reference = ref;
  3.         typeFormulaire = type;
  4.         fieldListener = new RechercheFieldListener(this);
  5.     }


 
j'ai essayé en forçant, mais ça marche pas non plus :
 

Code :
  1. for (int i=0 ; i<nbRecherches ; i++){
  2.             recherchePane.add(new RecherchePane(InterfaceApplet.this,typeFormulaire));
  3.         }


Message édité par Predicator le 14-03-2003 à 12:20:45
Reply

Marsh Posté le 14-03-2003 à 12:25:43    

Et ça :  
 
fieldListener = new RechercheFieldListener(this);
 
Ca fait quoi??
 
Parce que bon, avant ça, ton RecherchePane, il est vide....


Message édité par gfive le 14-03-2003 à 12:27:06
Reply

Marsh Posté le 14-03-2003 à 12:42:18    

on s'en fout de fieldListener :)
c'est un truc que je dois changer en class anonyme de toute façon...
en gros c'est un actionListener qui possède ue référence vers son RecherchePane et qui lance une action... :)  
 
j'ai enlevé du constructeur le code qui crée le layout, vu qu'il n'est pas en cause, car il se sert pas de la reference...


Message édité par Predicator le 14-03-2003 à 12:42:54
Reply

Marsh Posté le 14-03-2003 à 12:59:17    

ben, justement, le comportement que tu obtiens me fait pesner que le code de remplissage du RecherchePane pourrait être en cause : enfin, indirectement : il marche pour une instance de recherchePane, mais il plante si tu l'appelle ensuite sur un deuxième (à cause du this, en fait)....A moins que tu n'y fasse que des 'new machin' a l'intérieur....Parce que sinon, vraiment, ça m'étonne!

Reply

Marsh Posté le 14-03-2003 à 13:53:21    

en fait, nbRecherche = 1, donc dans tous les cas, il n'y a qu'un seul tour de boucle (c'est juste un prévision pour le futur)
mais ce problème apparait sur tous les panel que je crée en boucle (j'ai un autre objet du même type qui a le même comportement, mais qui lui ne créer acuun listener avec this en paramètre)
 
c'est vraiment louche...
 
j'essaye d'enlever le new listener, mais j'ai des doutes...

Reply

Marsh Posté le 14-03-2003 à 13:58:12    

voilà le nouveau code du constructeur, j'ai laissé le reste (la boucle et la création d'un seul RecherchePane) tel quel
 

Code :
  1. RecherchePane(InterfaceApplet ref, TypeFormulaire type){
  2.         reference = ref;
  3.         typeFormulaire = type;
  4.         String[] liste = typeFormulaire.getListeSousTypes();
  5.         selectType = new JComboBox(liste);
  6.         selectType.addItemListener(new ItemListener(){
  7.             public void itemStateChanged(ItemEvent e){
  8.                 SwingUtilities.invokeLater(loadRun);
  9.             }
  10.         });
  11.         fieldListener = new ActionListener(){
  12.             public void actionPerformed(ActionEvent e){
  13.                 launchSearch();
  14.             }
  15.         };
  16.         createLayout();
  17.     }


 
le résultat est toujours le même...

Reply

Marsh Posté le 14-03-2003 à 14:02:59    

Et createLayout(), ça fait quoi??

Reply

Marsh Posté le 14-03-2003 à 14:08:37    

ça remplit le panel
 
de plus en plus étrange :
 

Code :
  1. recherchePane = new ArrayList();
  2. for (int i=0 ; i<nbRecherches ; i++){
  3.    recherchePane.add(new RecherchePane(InterfaceApplet.this,typeFormulaire));
  4.    tabbedPane.addTab(Integer.toString(i),new RecherchePane(InterfaceApplet.this,typeFormulaire));
  5. }
  6. for (int i=0 ; i<nbRecherches ; i++){
  7.    RecherchePane current = (RecherchePane) recherchePane.get(i);
  8.    tabbedPane.addTab(current.getTabName(),current);
  9. }


 
ça m'ajoute bien un panel de nom "0", mais le panel recherchePane.get(0) ne s'affiche toujours pas :heink:

Reply

Marsh Posté le 14-03-2003 à 14:13:25    

ben...il doit être vide, ton panel, je vois que ça!! C'est createLayout() qui fait pas bien son boulot.....
Essaie un truc :  
 

Code :
  1. for (int i=0 ; i<nbRecherches ; i++){
  2.   RecherchePane current = (RecherchePane) recherchePane.get(i);
  3.   current.setBackgroun(Color.red);
  4.   tabbedPane.addTab(current.getTabName(),current);
  5. }

 
 
avec un import java.awt.*; au début....Si quand tu cliques sur l'onglet '0', tu vois un machin rouge, ben c'est que c'est ça!

Reply

Marsh Posté le 14-03-2003 à 14:14:47    

mais non ! puisque quand j'ajoute un RecherchePane en dehors de la boucle il s'affiche bien.
si c'était aussi simple que ça, j'aurai trouvé depuis longtemps...

Reply

Marsh Posté le 14-03-2003 à 14:15:46    

ben, pas forcément....Si dans createLayout(), tu utilises ref, qui est le même pointeur pour tous les éléments de ta boucle, ça peut planter!

Reply

Marsh Posté le 14-03-2003 à 14:20:25    

bon, voici le dernier code (j'ai mis nbRecherches = 3 pour faciliter) :
 

Code :
  1. nbRecherches = 3;
  2. for (int i=0 ; i<nbRecherches ; i++){
  3.    recherchePane.add(new RecherchePane(InterfaceApplet.this,typeFormulaire));
  4. }
  5. JTabbedPane tabbedPane = new JTabbedPane();
  6. for (int i=0 ; i<nbRecherches ; i++){
  7.    RecherchePane current = (RecherchePane) recherchePane.get(i);
  8.    tabbedPane.addTab(current.getTabName(),current);
  9.    // ajout "à la main"
  10.    tabbedPane.addTab(Integer.toString(i),new RecherchePane(InterfaceApplet.this,typeFormulaire));
  11. }
  12. System.out.println("tabbedPane.getTabCount() = " + tabbedPane.getTabCount());


 
alors avec ça, tabbedPane.getTabCount() = 6
je fais un screenshot de ce pas pour montrer le résultat...

Reply

Marsh Posté le 14-03-2003 à 14:22:33    

http://membres.lycos.fr/starfox/tmp/tabbedPane3.jpg
 
 :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:

Reply

Marsh Posté le 14-03-2003 à 14:25:03    

Essaie de faire un System.out.println(current.getTabName()) dans la boucle...Si ça se trouve, il est null, le nom..

Reply

Marsh Posté le 14-03-2003 à 14:28:37    

Code :
  1. public String getTabName(){
  2.    return "Recherche";
  3. }

Reply

Marsh Posté le 14-03-2003 à 14:32:19    

Pinaize!!!!! Mais c'est dingue, ce truc!!!
Si tu veux un regard extérieur (et puis aussi, ça me prend la tête, ton machin! :D) tu peux m'envoyer le code là : gfive@altern.org, que je regarde ça.
 
Promis, je suis pas un méchant pirate! :D

Reply

Marsh Posté le 14-03-2003 à 14:37:00    

c'est pas le problème d'être un méchant pirate, c'est que le code de la classe InterfaceApplet est assez conséquent, et je peux pas te l'envoyer sans t'envoyer 2000 packages avec :)
 
j'essaye d'épurer la classe RecherchePane et de créer une nouvelle applet, et je t'envoie le tout...

Reply

Marsh Posté le 14-03-2003 à 14:46:26    

:cry:  
 
bien spur ça marche quand c'est épuré... :pt1cable:
 

Code :
  1. package Test;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. public class RecherchePane extends JPanel{
  7.     Test reference;
  8.     JPanel panel;
  9.     JPanel north;
  10.     JPanel center;
  11.     JEditorPane south;
  12.     JTextField rechGen;
  13.     JButton go;
  14.     JButton modeA;
  15.     JTextField annotateur;
  16.     RecherchePane(Test ref){
  17.         reference = ref;
  18.         createLayout();
  19.     }
  20.     public void createLayout(){
  21.         setLayout(new BorderLayout());
  22.         panel = new JPanel(new BorderLayout(15,15));
  23.         north = new JPanel(new GridLayout(3,1,5,5));
  24.         JPanel ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  25.         ntmp.add(new JLabel("Rechercher" ));
  26.         rechGen = new JTextField(50);
  27.         ntmp.add(rechGen);
  28.         go = new JButton("GO" );
  29.         go.setToolTipText("Lancer la recherche" );
  30.         ntmp.add(go);
  31.         north.add(ntmp);
  32.         ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  33.         annotateur = new JTextField(20);
  34.         ntmp.add(new JLabel("Annotateur" ));
  35.         ntmp.add(annotateur);
  36.         north.add(ntmp);
  37.         ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  38.         modeA = new JButton("Mode avancé" );
  39.         modeA.setToolTipText("Basculer en mode avancé" );
  40.         ntmp.add(modeA);
  41.         north.add(ntmp);
  42.         center = new JPanel(new FlowLayout(FlowLayout.LEFT));
  43.         panel.add(north,"North" );
  44.         //panel.add(center,"Center" );
  45.         south = new JEditorPane();
  46.         south.setEditable(false);
  47.         panel.add(south,"South" );
  48.         JScrollPane scrollPane = new JScrollPane(panel);
  49.         scrollPane.getHorizontalScrollBar().setUnitIncrement((int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  50.         scrollPane.getVerticalScrollBar().setUnitIncrement((int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  51.         scrollPane.getViewport().setViewSize(panel.getPreferredSize());
  52.         add(scrollPane,"Center" );
  53.         //revalidate();
  54.     }
  55.     public String getTabName(){
  56.         //toDo V2 : intégrer une variable nom onglet
  57.         return "Recherche";
  58.     }
  59.     public Test getReference() {
  60.         return reference;
  61.     }
  62. }


 

Code :
  1. package Test;
  2. import javax.swing.*;
  3. import java.util.ArrayList;
  4. /**
  5. * Created by IntelliJ IDEA.
  6. * User: xxx
  7. * Date: 14 mars 2003
  8. * Time: 14:37:31
  9. */
  10. public class Test extends JApplet{
  11.     public void init(){
  12.         JTabbedPane tabbedPane = new JTabbedPane();
  13.         ArrayList liste = new ArrayList();
  14.         for (int i=0 ; i<3 ; i++){
  15.             liste.add(new RecherchePane(this));
  16.         }
  17.         for (int i=0 ; i<3 ; i++){
  18.             tabbedPane.addTab("auto"+i,(RecherchePane)liste.get(i));
  19.             tabbedPane.addTab("manu"+i,new RecherchePane(this));
  20.         }
  21.         getContentPane().add(tabbedPane);
  22.     }
  23. }


Message édité par Predicator le 14-03-2003 à 14:47:31
Reply

Marsh Posté le 14-03-2003 à 15:34:50    

j'ai trouvé d'où vient le problème :pt1cable:  
 
on ne peut pas ajouter un seul JPanel dans 2 JTabbedPane, sinon il s'enlève du premier. Code qui prouve :
 

Code :
  1. package Test;
  2. import javax.swing.*;
  3. import java.util.ArrayList;
  4. /**
  5. * Created by IntelliJ IDEA.
  6. * User: gmaitral
  7. * Date: 14 mars 2003
  8. * Time: 14:37:31
  9. */
  10. public class Test extends JApplet{
  11.     public void init(){
  12.         JTabbedPane tabbedPane = new JTabbedPane();
  13.         ArrayList liste = new ArrayList();
  14.         for (int i=0 ; i<3 ; i++){
  15.             liste.add(new TestRecherchePane(this));
  16.         }
  17.         for (int i=0 ; i<3 ; i++){
  18.             tabbedPane.addTab("auto"+i,(TestRecherchePane)liste.get(i));
  19.             tabbedPane.addTab("manu"+i,new TestRecherchePane(this));
  20.         }
  21.         JTabbedPane enfoire = new JTabbedPane();
  22.         for (int i=0 ; i<3 ; i++){
  23.             enfoire.addTab("auto"+i,(TestRecherchePane)liste.get(i));
  24.         }
  25.         getContentPane().add(tabbedPane);
  26.     }
  27. }


 

Code :
  1. package Test;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. public class TestRecherchePane extends JPanel{
  7.     Test reference;
  8.     JPanel panel;
  9.     JPanel north;
  10.     JPanel center;
  11.     JEditorPane south;
  12.     JTextField rechGen;
  13.     JButton go;
  14.     JButton modeA;
  15.     JTextField annotateur;
  16.     public TestRecherchePane(Test ref){
  17.         reference = ref;
  18.         createLayout();
  19.     }
  20.     public void createLayout(){
  21.         setLayout(new BorderLayout());
  22.         panel = new JPanel(new BorderLayout(15,15));
  23.         north = new JPanel(new GridLayout(3,1,5,5));
  24.         JPanel ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  25.         ntmp.add(new JLabel("Rechercher" ));
  26.         rechGen = new JTextField(50);
  27.         ntmp.add(rechGen);
  28.         go = new JButton("GO" );
  29.         go.setToolTipText("Lancer la recherche" );
  30.         ntmp.add(go);
  31.         north.add(ntmp);
  32.         ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  33.         annotateur = new JTextField(20);
  34.         ntmp.add(new JLabel("Annotateur" ));
  35.         ntmp.add(annotateur);
  36.         north.add(ntmp);
  37.         ntmp = new JPanel(new FlowLayout(FlowLayout.LEFT));
  38.         modeA = new JButton("Mode avancé" );
  39.         modeA.setToolTipText("Basculer en mode avancé" );
  40.         ntmp.add(modeA);
  41.         north.add(ntmp);
  42.         center = new JPanel(new FlowLayout(FlowLayout.LEFT));
  43.         panel.add(north,"North" );
  44.         //panel.add(center,"Center" );
  45.         south = new JEditorPane();
  46.         south.setEditable(false);
  47.         panel.add(south,"South" );
  48.         JScrollPane scrollPane = new JScrollPane(panel);
  49.         scrollPane.getHorizontalScrollBar().setUnitIncrement((int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  50.         scrollPane.getVerticalScrollBar().setUnitIncrement((int)scrollPane.getHorizontalScrollBar().getUnitIncrement()*5);
  51.         scrollPane.getViewport().setViewSize(panel.getPreferredSize());
  52.         add(scrollPane,"Center" );
  53.         //revalidate();
  54.     }
  55.     public String getTabName(){
  56.         return "TestRecherche";
  57.     }
  58.     public Test getReference() {
  59.         return reference;
  60.     }
  61. }


 
 :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  
moi qui croyais que tout n'était que référence en Java...
 
c'est quand même foireux, on l'ajoute au second, il disparait du premier, mais il reste dans sa liste ! (le getTabCount() donne toujours 6) [:yopyopyop]
 
un grand merci à gfive qui m'a accompagné dans cette opération prise de tête... merci copaing :hello:


Message édité par Predicator le 14-03-2003 à 15:36:09
Reply

Marsh Posté le 14-03-2003 à 15:46:26    

Ah ouais!! Subtil, en effet, mais relativement normal, pour une UI , en fait....  
Enfin, félicitation!! :)

Reply

Marsh Posté le 14-03-2003 à 15:52:53    

gfive a écrit :

Ah ouais!! Subtil, en effet, mais relativement normal, pour une UI , en fait....  
Enfin, félicitation!! :)


 
je ne fais du Swing que depuis 6 mois, mais moi ça me parait normal de pouvoir afficher le même composant depuis plusieurs endroits différents...
 
si on me dit le contraire, ben je veux bien, mais dans ce cas, que ce soit cohérent. un tabbedPane qui renvoit une taille de 6 alors qu'il n'affiche que 3 formulaires, c'est chelou :heink:  
 
à bientôt pour de nouvelles aventures !!! [:xp1700]

Reply

Marsh Posté le 14-03-2003 à 16:03:43    

Predicator a écrit :


je ne fais du Swing que depuis 6 mois, mais moi ça me parait normal de pouvoir afficher le même composant depuis plusieurs endroits différents...


Ben en fait dans certains cas, les DataModel te permettent de lier plusieurs composants a des memes donnees.
Par contre reutiliser un meme composant graphique, je sais pas si c'est tres "bien".
Mais c'est vrai que ça pourrai sembler pratique ... ça se discute
 [:bobuse]


Message édité par bobuse le 14-03-2003 à 16:04:15

---------------
get amaroK plugin
Reply

Marsh Posté le 14-03-2003 à 17:24:50    

en y réfléchissant, c'est vrai que ça peut pas marcher...
sinon getParent() s'emballe :pt1cable:  
mais quand même, ne pas mettre à jour les données, on m'enlèvera pas de la tête que c'est chelou :sweat:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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