[Résolu] BoxLayout et Glue (marche pas !)
Bonjour à tous,
Voila, je doit faire un petit panel d'identification avec login mot de passe et bouton de connexion...
Pour bien centrer tout ça et que ça garde les bonnes proportionnalités lors du redimensionnement, j'ai pensé au BoxLayout et au Box.createGlue().
Bon, j'ai donc fait un petit
setLayout( new BoxLayout(jpCentre, BoxLayout.Y_AXIS));
sur mon petit panel et j'ai mis des HorizontalBox a l'intérieur. Ensuite j'ai mis plein de createHorizontalGlue() et createVerticalGlue() de partout...
Mais je sais pas pourquoi, c'est comme si elles n'y étaient pas : et tout mes JLabel et JTextField ont des tailles énormes 8O
Voila 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
|
public class JPanelLogin extends javax.swing.JPanel
{
private JPanel jpCentre;
private JLabel jlLogin;
private JLabel jlMdp;
private JTextField jtfLogin;
private JPasswordField jpfMdp;
private JButton jbConnexion;
public JPanelLogin()
{
initComponents();
jpCentre = new JPanel();
jpCentre.setBackground( Color.GREEN );
jpCentre.setMaximumSize( new Dimension (400,300) );
jpCentre.setPreferredSize( new Dimension (400,300) );
jpCentre.setSize( jpCentre.getPreferredSize() );
jpCentre.setLayout( new BoxLayout(jpCentre, BoxLayout.Y_AXIS));
jlLogin = new JLabel("Login :");
jlLogin.setFont(new java.awt.Font("Tahoma", 0, 18));
jlMdp = new JLabel("Mot de passe :");
jlMdp.setFont(new java.awt.Font("Tahoma", 0, 18));
jtfLogin = new JTextField();
jtfLogin.setFont(new java.awt.Font("Tahoma", 0, 18));
jpfMdp = new JPasswordField();
jpfMdp.setFont(new java.awt.Font("Tahoma", 0, 18));
jbConnexion = new JButton("Connexion");
jbConnexion.setFont(new java.awt.Font("Tahoma", 0, 18));
jpCentre.add( Box.createVerticalGlue() );
Box hBox1 = Box.createHorizontalBox();
hBox1.add( Box.createHorizontalGlue() );
hBox1.add( jlLogin );
hBox1.add( Box.createHorizontalGlue() );
hBox1.add( jtfLogin );
hBox1.add( Box.createHorizontalGlue() );
jpCentre.add( hBox1 );
jpCentre.add( Box.createVerticalGlue() );
Box hBox2 = Box.createHorizontalBox();
hBox2.add( Box.createHorizontalGlue() );
hBox2.add( jlMdp);
hBox2.add( Box.createHorizontalGlue() );
hBox2.add( jpfMdp );
hBox2.add( Box.createHorizontalGlue() );
jpCentre.add( hBox2 );
jpCentre.add( Box.createVerticalGlue() );
jpCentre.add( jbConnexion );
jpCentre.add( Box.createVerticalGlue() );
add( jpCentre );
setSize( getPreferredSize() );
} |
rq: j'ai remarqué que ce sont les JTextField qui s'étalent au maximum comme les "glue" mais sont prioritaires, comment enlever ca?
rq : si j'ai deux panel, c'est parceque jPanelCentre doit être un petit carré situé au centre de la page...c'est d'aielleurs lui qui est en BoxLayout...
et une petite photo :
[img=http://img77.imageshack.us/img77/7408/sanstitrekv3.th.jpg]
Bon, je sens le truc très con, parce que si je remplace les "Glue" par des "Strut" ca marche (mais c'est pas dynamique) et, j'arrive aussi ailleurs (dans une barre de menu) à faire marcher ces "Glue", mais là:roll:...
Bon, j'espère que vous pourrez me filer un coup de main.
Merci
A bientôt
PS : j'utilise Netbeans 5.5.1 car je travail avec Hibernate qui n'est pas compatible avec le 6.
[EDITION]
Il faut utiliser le .setMaximumSize() et le .setMinimumSize() .
[/EDITION]