OVH Cloud OVH Cloud

Probleme graphique

3 réponses
Avatar
Tony
Bonjour,
J'ai un probl=E8me au niveau de mon JFrame, il contient des JLabel,
JTextField et de Jbutton, il s'agit d'une fen=EAtre assez banal. Tous
ces composants sont mis dans le sens de la hauteur et je n'ai aucun
probl=E8me au premier affichage mais lorsque je fais un hide() puis un
show() tous mes composant s'affiche dans le sens de la longuer, etant
novice dans les IHM et ayant tout coder =E0 la main(pas utiliser de
JBuilder ou autres permettant de r=E9aliser des interfaces =E0 la facon
VB ;) ) je pense avoir commis quelques erreurs. Je vous fourni mon code

de l'interface.
Merci pour votre aide a+


setResizable(false);
setDefaultCloseOperation(JFram=ADe.DISPOSE_ON_CLOSE);
ip.setEditable(false);
ip.setBackground(Color.WHITE);
p.setLayout(new GridBagLayout());


c =3D new GridBagConstraints();
c.gridx =3D 0;
c.gridy =3D 0;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.WEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 0;
c.weighty=3D0;
//c.ipady=3D10;
//c.weighty =3D 1;
g.setConstraints(Lip,c);
p.add(Lip);


c =3D new GridBagConstraints();
c.gridx =3D 1;
c.gridy =3D 0;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHWEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 1000;
c.weighty=3D0;
//c.weighty =3D 1;
g.setConstraints(ip,c);
p.add(ip);


c=3Dnew GridBagConstraints();
c.gridx =3D 0;
c.gridy =3D 1;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.weightx =3D 0;
c.weighty =3D1000;
c.anchor =3D GridBagConstraints.WEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(0, 0, 0, 10);
//c.ipady =3D 7;
g.setConstraints(Lbase, c);
p.add(Lbase);


c =3D new GridBagConstraints();
c.gridx =3D 1;
c.gridy =3D 1;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHWEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 100;
c.weighty=3D1000;
//c.weighty =3D 1;
donne.setText("BACKCSRPBASE");
donne.setEditable(false);
g.setConstraints(donne,c);
p.add(donne);


c =3D new GridBagConstraints();
c.gridx =3D 0;
c.gridy =3D 2;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.WEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(0, 0, 0, 10);
c.weightx =3D0;
c.weighty=3D9999;
//c.weighty =3D 1;
g.setConstraints(Luser,c);
p.add(Luser);


c =3D new GridBagConstraints();
c.gridx =3D 1;
c.gridy =3D 2;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHWEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 100;
c.weighty=3D9999;
//c.weighty =3D 1;
g.setConstraints(user,c);
p.add(user);


c =3D new GridBagConstraints();
c.gridx =3D 0;
c.gridy =3D 3;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.WEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(0, 0, 0, 10);
c.weightx =3D0;
c.weighty=3D999999;
//c.weighty =3D 1;
g.setConstraints(Lmdp,c);
p.add(Lmdp);


c =3D new GridBagConstraints();
c.gridx =3D 1;
c.gridy =3D 3;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHWEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 100;
c.weighty=3D9999999;
//c.weighty =3D 1;
g.setConstraints(mdp,c);
p.add(mdp);


c =3D new GridBagConstraints();
c.gridx =3D 0;
c.gridy =3D 5;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHEAST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D1;
c.weighty=3D9999999;
//c.weighty =3D 1;
g.setConstraints(ok,c);
p.add(ok);


c =3D new GridBagConstraints();
c.gridx =3D 1;
c.gridy =3D 5;
c.gridwidth =3D1;
c.gridheight =3D 1;
c.anchor =3D GridBagConstraints.NORTHWEST;
c.fill =3D GridBagConstraints.NONE;
c.insets =3D new Insets(10, 0, 0, 0);
c.weightx =3D 100;
c.weighty=3D10000;
//c.weighty =3D 1;
g.setConstraints(ann,c);
p.add(ann);


f.add(p);


setContentPane(f);
//setSize(220, 200);
//setLocation(10, 10);
setVisible(true);=20
//pack();=20


show();

3 réponses

Avatar
damien guerin
Essaie sans LayoutManager et en mettant les position en absolu...
Avatar
Nicolas Le Scouarnec
Essaie sans LayoutManager et en mettant les position en absolu...


C'est pas vraiment une bonne idée... Si la taille de la police change
(si l'OS change), alors tu n'auras plus des tailles correctes. Si on
veut rajouter un composant, cela oblige a tout refaire, ...

Par contre, il peut essayer quelque chose de moins compliqué que le
GridBagLayout (genre Grid + Border)


--
Nicolas Le Scouarnec

Avatar
Zazoun
Dans le code que tu envoies, rien n'indique que "g" est le même objet
le layout utilisé par le container.
Pour que les objets d'une JFrame apparaissent avec le placement
décrit, il est nécessaire d'appeler JFrame.pack() avant d'afficher la
fenêtre.

Quelques commentaires sur ton code :
- Tu peux n'utiliser qu'un seul objet GridBagConstraints, au lieu d'en
instancier un nouveau à chaque composant à placer. Ca te permettrait
de simplifier ton code, par exemple en ne réécrivant pas à chaque
fois " c.fill = GridBagConstraints.NONE".
- À la place de
" g.setConstraints(ann,c);
p.add(ann); "
tu peux écrire directement p.add(ann, c).
- setVisible(true) et show() sont redondants.

Placer tes composants avec des positions en absolu est une mauvaise
idée : si tu veux ajouter un composant à ta fenêtre, ou
internationaliser ses labels, tout est à refaire.

En espérant que ca t'a aidé ...