Bonjour,
Je suis en cours de développement d'une application en architecture MVC et j'ai un petit problème sur le fonctionnement du GridBag Layout manager.
Mon appli est construite comme ceci :
Dans la classe Controller j'ai JFrame=>JPanel de contenu (ContentPanel) avec un CardLayout qui contient des JPanel gérés chacun avec un GridBagLayout. J'ajoute donc dans cette même classe différents composants (JPanels, Boxes) qui sont instanciés dans une sous-classe de Controller.
A la mise en place des composants ça donne ces instructions. Dans cet exemple this.menuparamguipanel c'est le JPanel de contenu, this.menuparamguic.getMenuPanel() c'est l'instanciation de la sous-classe de Controller qui correspond à la page MenuParam et qui récupère les Jpanels à ajouter avec la méthode getXXX()
Avec la méthode kivabien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /** Add the GUIc Menu JPanel to the menuparam GUI panel **/ GridBagConstraints c20=this.createGridBagConstraints(GridBagConstraints.FIRST_LINE_START,GridBagConstraints.VERTICAL,0,0,3,7,0,0.5); this.menuparamguipanel.add(this.menuparamguic.getMenuPanel(),c20); /** Add the GUIc MAD JPanel to the menuparam GUI panel **/ GridBagConstraints c21=this.createGridBagConstraints(GridBagConstraints.CENTER,GridBagConstraints.BOTH,3,0,21,7,0.8,0.5); this.menuparamguipanel.add(this.menuparamguic.getMADPanel(),c21); /** Add the GUIv Display JPanel to the menuparam GUI panel **/ GridBagConstraints c22=this.createGridBagConstraints(GridBagConstraints.LAST_LINE_START,GridBagConstraints.BOTH,0,7,24,9,1,0.7); this.menuparamguipanel.add(this.view.getMenuParamGUIv().getDisplayPanel(),c22);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public GridBagConstraints createGridBagConstraints(int gbcanchor, int gbcfill,int gbcgrx,int gbcgry,int gbcgrw,int gbcgrh,double gbcwex,double gbcwey) { GridBagConstraints c=new GridBagConstraints(); c.anchor=gbcanchor; c.fill=gbcfill; c.gridx=gbcgrx; c.gridy=gbcgry; c.gridwidth=gbcgrw; c.gridheight=gbcgrh; c.weightx=gbcwex; c.weighty=gbcwey; return c; }
Bref je ne mets pas plus de code car tout fonctionne à peu près correctement et j'ai quasi 5k lignes sur le Controller, même si j'ai l'impression que les grilles que j'ai fait pour mes JPanels ne sont pas trop respectées et que les poids prennent le dessus.
Mon plus gros problème c'est que le layout redimensionne les fenêtres si des composants changent de taille : JComboBox, JLabels, JTextFields, etc... J'aimerais savoir d'où ça peut venir et si on peut désactiver ça? Ca ne gène pas le déroulement de l'appli mais c'est assez désagréable à l'oeil.
Par exemple : le panneau display fait la moitié inférieure de l'écran et même en ne touchant à rien il peut gagner un bon cm de hauteur. Java semble faire un repaint() à sa propre initiative.
Bref si des experts peuvent me donner des pistes de recherche.
Partager