Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1406 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  problème avec JTabbedPane [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec JTabbedPane [Résolu]

n°332358
Predicator
Posté le 13-03-2003 à 18:11:00  profilanswer
 

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
mood
Publicité
Posté le 13-03-2003 à 18:11:00  profilanswer
 

n°332426
bobuse
Posté le 13-03-2003 à 19:48:49  profilanswer
 

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


---------------
get amaroK plugin
n°332516
Predicator
Posté le 13-03-2003 à 20:34:14  profilanswer
 

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);

n°332747
bobuse
Posté le 14-03-2003 à 01:01:26  profilanswer
 

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
n°332987
Predicator
Posté le 14-03-2003 à 09:49:25  profilanswer
 

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... :(

n°333037
gfive
Posté le 14-03-2003 à 10:37:03  profilanswer
 

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??

n°333096
Predicator
Posté le 14-03-2003 à 11:18:42  profilanswer
 

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.

n°333100
Predicator
Posté le 14-03-2003 à 11:22:42  profilanswer
 

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
n°333128
Predicator
Posté le 14-03-2003 à 11:29:43  profilanswer
 

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
n°333172
Predicator
Posté le 14-03-2003 à 11:53:47  profilanswer
 

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
mood
Publicité
Posté le 14-03-2003 à 11:53:47  profilanswer
 

n°333185
gfive
Posté le 14-03-2003 à 12:00:23  profilanswer
 

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
n°333202
Predicator
Posté le 14-03-2003 à 12:05:23  profilanswer
 

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:

n°333207
gfive
Posté le 14-03-2003 à 12:06:42  profilanswer
 

Edit!! :D Sorry!

n°333228
Predicator
Posté le 14-03-2003 à 12:13:06  profilanswer
 

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:

n°333238
gfive
Posté le 14-03-2003 à 12:17:13  profilanswer
 

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!

n°333243
Predicator
Posté le 14-03-2003 à 12:20:32  profilanswer
 

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
n°333259
gfive
Posté le 14-03-2003 à 12:25:43  profilanswer
 

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
n°333293
Predicator
Posté le 14-03-2003 à 12:42:18  profilanswer
 

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
n°333328
gfive
Posté le 14-03-2003 à 12:59:17  profilanswer
 

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!

n°333384
Predicator
Posté le 14-03-2003 à 13:53:21  profilanswer
 

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...

n°333388
Predicator
Posté le 14-03-2003 à 13:58:12  profilanswer
 

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...

n°333393
gfive
Posté le 14-03-2003 à 14:02:59  profilanswer
 

Et createLayout(), ça fait quoi??

n°333397
Predicator
Posté le 14-03-2003 à 14:08:37  profilanswer
 

ç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:

n°333404
gfive
Posté le 14-03-2003 à 14:13:25  profilanswer
 

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!

n°333409
Predicator
Posté le 14-03-2003 à 14:14:47  profilanswer
 

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...

n°333413
gfive
Posté le 14-03-2003 à 14:15:46  profilanswer
 

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!

n°333428
Predicator
Posté le 14-03-2003 à 14:20:25  profilanswer
 

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...

n°333438
Predicator
Posté le 14-03-2003 à 14:22:33  profilanswer
 

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

n°333447
gfive
Posté le 14-03-2003 à 14:25:03  profilanswer
 

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

n°333451
Predicator
Posté le 14-03-2003 à 14:28:37  profilanswer
 

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

n°333461
gfive
Posté le 14-03-2003 à 14:32:19  profilanswer
 

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

n°333467
Predicator
Posté le 14-03-2003 à 14:37:00  profilanswer
 

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...

n°333489
Predicator
Posté le 14-03-2003 à 14:46:26  profilanswer
 

: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
n°333598
Predicator
Posté le 14-03-2003 à 15:34:50  profilanswer
 

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
n°333608
gfive
Posté le 14-03-2003 à 15:46:26  profilanswer
 

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

n°333616
Predicator
Posté le 14-03-2003 à 15:52:53  profilanswer
 

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]

n°333621
bobuse
Posté le 14-03-2003 à 16:03:43  profilanswer
 

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
n°333675
Predicator
Posté le 14-03-2003 à 17:24:50  profilanswer
 

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:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  problème avec JTabbedPane [Résolu]

 

Sujets relatifs
[HTML] Problème de marges (question conne)et HTML probleme d'affichage tout con
forum en PHP : problème de suivi des messages [résolu]Probleme d'espaces dans un <input> et php
probléme pour récupérer des emailsProblème d'en-tête avec la fonction mail()
Problème d'images défilantesProblème d'affichage avec &nbsp et modzilla dans routine php
[java][newbie]savoir si le txtfield est bien un int[résolu] 
Plus de sujets relatifs à : problème avec JTabbedPane [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR