1 pièce(s) jointe(s)
[GridBagLayout] Colonne en trop ? et conception
Bonjour,
Je débute avec swing et le GridBagLayout. J'ai un petit soucis (je penses de compréhension je penses) avec mon layout.
Voila ce que je j'obtiens.
Pièce jointe 384518
Normalement si j'ai tout bien compris je devrais avoir la partie rose qui est équivalente a la grise. Mais ce n'est pas le cas.
Voici un peu mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| package vue;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class FenetreTest extends JFrame{
private JLabel lblComboBox;
private JComboBox<String> cboListeChoix;
private String[] Liste= {"Cdi1","Cdi2","Cdi3","Cdi4"};
private JButton cmdToutCocher;
private JButton cmdToutDecocher;
private JButton cmdRandom;
private JButton cmdRandom2;
public FenetreTest(String titre,int largeur,int hauteur){
setTitle(titre);
setSize(largeur, hauteur);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridBagLayout());
initComposants();
setVisible(true);
}
public void initComposants() {
GridBagConstraints gbc= new GridBagConstraints();
//*******Label description ComboBox******
gbc.gridx= gbc.gridy =0;
gbc.gridheight=gbc.gridheight=1;
lblComboBox=new JLabel();
lblComboBox.setText("Classe :");
add(lblComboBox,gbc);
//******fin LblComboBox******
//*********ComboBox*******
gbc.gridx=1;
cboListeChoix= new JComboBox<>();
cboListeChoix.setEditable(false);
for (String indexListe : Liste) {
cboListeChoix.addItem(indexListe);
}
add(cboListeChoix,gbc);
//******FinComboBox*******
//******Bouton Tout Cocher****
gbc.gridx=3;
cmdToutCocher=new JButton();
cmdToutCocher.setText("Tout cocher");
add(cmdToutCocher,gbc);
//******Fin tout cocher******
//******Bouton tout decocher******
gbc.gridx=4;
//gbc.gridwidth=GridBagConstraints.REMAINDER;
cmdToutDecocher=new JButton();
cmdToutDecocher.setText("Tout decocher");
add(cmdToutDecocher,gbc);
//******Fin tout decocher******
//******Panneau rose******
gbc.gridy=1;
gbc.gridx=0;
gbc.gridheight=5;
gbc.gridwidth=3;
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill=GridBagConstraints.BOTH;
add(new PanResultat(),gbc);
//******fin Panneau rose******
//******Panneau gris******
gbc.gridx=3;
//gbc.gridwidth=GridBagConstraints.REMAINDER;
gbc.gridwidth=2;
PanResultat panResultat=new PanResultat();
panResultat.setBackground(new Color(100,100,100));
add(panResultat,gbc);
//******fin Panneau gris******
gbc.weightx = 0;
gbc.weighty = 0;
gbc.fill=GridBagConstraints.NONE;
//******Bouton Random****
gbc.gridy=7;
gbc.gridheight=1;
gbc.gridwidth=1;
cmdRandom=new JButton();
cmdRandom.setText("Tout cocher");
add(cmdRandom,gbc);
//******Fin tout cocher******
//******Bouton Random****
gbc.gridx=4;
gbc.gridwidth=1;
cmdRandom2=new JButton();
cmdRandom2.setText("Tout cocher");
add(cmdRandom2,gbc);
//******Fin tout cocher******
}
} |
Voici le code pour le Jpanel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package vue;
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class PanResultat extends JPanel {
public PanResultat() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JLabel l1= new JLabel("Label1");
JLabel l2= new JLabel("Label2");
JLabel l3= new JLabel("Label3");
setSize(400,200);
add(l1);
add(l2);
add(l3);
setBackground(new Color(255, 0, 150));
}
} |
Au niveau de la conception devrais je passer par un Jpanel pour les boutons du bas et du haut car je n'ai pas le même nombres d’éléments sur chaque ligne de GridBagLayout.
Merci