Je souhaite centrer 2 boutons dans une fenêtre et je n’y arrive pas. Je me gratte la tête, je suis sûr que c’est super hypra c*n mais ça ne vient pas
J’explique :
J’ai une fenêtre JFrame ayant pour dimensions 950x800.
Elle s’affiche correctement.
Ensuite, je fais un this.setContentPane(monPanel);
et voilà comment est contruit « monPanel » :
mainPanel = new JPanel();
JButton buttonFeuillesDeTemps = new JButton("Feuilles de temps");
//JButton buttonFeuillesDeTemps = new JButton(createImageIcon("images/timeclock2.gif"));
buttonFeuillesDeTemps.addActionListener(this.actionListener);
buttonFeuillesDeTemps.setName(Constants.BUTTON_MENU_FEUILLES_DE_TEMPS);
JButton buttonConfiguration = new JButton("Configuration");
//JButton buttonConfiguration = new JButton(createImageIcon("images/config2.gif"));
buttonConfiguration.addActionListener(this.actionListener);
buttonConfiguration.setName(Constants.BUTTON_MENU_CONFIGURATION);
buttonFeuillesDeTemps.setPreferredSize(new Dimension(50,50));
buttonConfiguration.setPreferredSize(new Dimension(50,50));
JButton buttonQuitter = new JButton("Quitter");
buttonQuitter.addActionListener(this.actionListener);
buttonQuitter.setName(Constants.BUTTON_MENU_QUITTER);
JPanel containerPanel = new JPanel();
containerPanel.add(buttonFeuillesDeTemps);
containerPanel.add(buttonConfiguration);
containerPanel.setBackground(Color.CYAN);
containerPanel.setMinimumSize(new Dimension(150,150));
containerPanel.setPreferredSize(new Dimension(150,150));
containerPanel.setMaximumSize(new Dimension(150,150));
containerPanel.setSize(new Dimension(150,150));
mainPanel.setLayout(new BorderLayout());
Component f = Box.createGlue();
f.setPreferredSize(new Dimension(50,50));
f.setSize(new Dimension(50,50));
mainPanel.add(f, BorderLayout.LINE_START);
mainPanel.add(containerPanel, BorderLayout.CENTER);
//mainPanel.add(Box.createVerticalGlue(),BorderLayout.PAGE_END);
Component f2 = Box.createHorizontalGlue();
mainPanel.add(f2, BorderLayout.LINE_END);
mainPanel.setBackground(Color.YELLOW);
mainPanel.setPreferredSize(new Dimension(200,200));
mainPanel.setMaximumSize(new Dimension(200,200));
mainPanel.setSize(new Dimension(200,200));
mainPanel.add(Box.createVerticalGlue(),BorderLayout.PAGE_START);
mainPanel.add(new JButton("hhhh"), BorderLayout.PAGE_END);
Là, vous voyez un peu tous mes essais pour que ça marche mais sans succès. En fait, le panel « containerPanel » prend tout l’espace disponible. Ce que je souhaite est de pouvoir ajouter 2 boutons à un panel et que ce panel s’affiche de manière centrée (horizontalement et verticalement) dans la fenêtre. Au lieu de ça, les boutons sont affichés en haut du panel « containerPanel » qui, prenant toute la place, se retrouve également en haut de la JFrame et donc non centrée.
Suite à vos posts, j’ai essayé avec les autres constantes (NORTH, EAST, WEST…) et ça donne la même chose. J’ai les deux jeux de constantes à disposition.
Ce je je fais, c’est ajouter 2 boutons dans un JPanel simple (donc le layout est FlowLayout apr défaut)
Ensuite, j’essaye d’ajouter ce panel dans le panel principal a qui je donne un layout BorderLayout.
Edité le 12/10/2007 à 13:03
un exemple
p_fond est un panel avec comme layout un borderLayout, p_bouton un flowlayout
b1 et b2 sont 2 boutons ajouts dans p_bouton qui est lui meme ajouté dans p_fond en position centrale
p_fond est ensuite désigné comme contentpane principale de la jframe.
class test extend JFrame
{
//…
JPanel p_fond = new JPanel(new BorderLayout());
JPanel p_bouton = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton b1,b2;
b1 = new JButton(« B1 »);
b2 = new JButton(« B2 »);
p_bouton.add(b1);
p_bouton.ad(b2);