Layout

Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 16 févr. 2012 à 16:00
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 - 20 févr. 2012 à 11:25
Bonjour,

Je suis en train de me prendre la tête sur les layouts...

J'ai une frame qui doit contenir une toolbar(en flowlayout) et un autre panel...

mon probléme survient lorsque je diminue la taille de ma Frame...

A la base j'avais dans ma frame un BorderLayout. Au north j'y met ma toolbar et au centre mon autre panel. le souci du border est que le north ne se redimensionne pas en verticale !!

En effet vu que ma toolbar est flow, les boutons mis dessus passe sur la ligne suivante quand la taille n'est plus suffisante. Ce qui fait que j'ai mes boutons qui passe sous mon panneau Center

Je me suis dit qu'en utilisant un GridBag je pourrait contourner ce problème, mais dans ce cas comment modifier ma GridBagConstraints lors du redimensionnement ?

En esperant avoir été clair...Sinon ouvrez eclipse et diminuez la largeur de la fenêtre...Vous verrez quel genre de redimensionnement je souhaite implémenter !!

CDT

9 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 févr. 2012 à 21:51
Salut,

d’après ton explication tu ne dois sans doute pas utiliser la classe JToolBar.
Tu changes ton JPanel par un JToolBar que tu places en top border, avec cette classe tes icônes ne bougerons pas de place quand tu minimiseras la fenêtre, c'est con elles ne seront plus visible non plus... mais (oui oui il y a un mais) la classe JToolBar est "floatable" du coups si tu lui laisses cet attribut (activé par défaut) l'utilisateur pourra soit la détacher, soit modifier son emplacement (left, top, bottom, right).


-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
16 févr. 2012 à 22:54
Bonsoir,

Tout d'abord merci de intéresser au problème.
Remarque :
- Ma toolbar est une classe qui hérite de JToolBar ayant comme layout un FlowLayout.

public class MyToolBar extends JToolBar {

public MyToolBar() throws Exception
{
           ...
                this.setFloatable(false);
this.setLayout(new FlowLayout(FlowLayout.LEADING));

        }

- Je considère que ma barre ne doit pas être floatable


Mon problème est surtout qu'avec le BorderLayout (de ma Frame) la région North se redimensionne en largeur mais pas en hauteur...

//Affectation de ma barre a la Frame
public void setMyToolBar(MyToolBar toolbar) throws Exception
{
this.getContentPane().add(toolbar,BorderLayout.NORTH);
}


Ce qui fait que lorsque mes boutons descende sur la 2eme ligne, ils passent sous mon panel mis au centre ...

J'ai voulu contourner le problème en mettant un Gridbag a la place du border de ma frame...

CDT
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
17 févr. 2012 à 11:28
Bonjour,

Je me solutionne tout seul...

Je me suis mis un TableLayout comme Layout de ma frame ...

//Construction de ma frame
 double size[][] ={{TableLayout.FILL},{0.25, TableLayout.FILL}};// Columns , Rows

     this.setLayout (new TableLayout(size));

//Ajout d'un composant Colonne 0 Ligne 1

this.add(composant,"0,1"); 

Voila...

CDT
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
18 févr. 2012 à 18:36
Bonsoir,

Finalement un peu trop optimiste...l'utilisation du TableLayout n'a pas corrigé mon problème...

Je reviendrais...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
19 févr. 2012 à 11:19
Bonjour,

Concernant le layout, j'ai finalement opté pour un GridBag (facilité par une classe GBC, sous GNU license, de construction de GridBagConstraints)

Je rappel que ma Frame est constitué de 2 éléments qui se superpose (une toolbar qui hérite de Jtoolbar, et un objet qui hérite de JTabbedPane ou de JSplitPane)

Maintenant, lorsque je diminue ma fenêtre, les boutons de ma toolbar passe a la ligne et ne sont pas caché parce que j'ai défini que la taille du weighty de la contraite appliqué a ma toolbar a 2.0, mais sans redimensionnement l'espace défini est trop grand...

Quel est le layout qu'on peut utilisé pour faire un redimensionnement de tous les composants (même fonctionnement que la fenêtre principal d'eclipse) ?

CDT
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
19 févr. 2012 à 13:53
Salut,

C'est con mais tu as testé de le faire en SWT ? tu auras la même toolbar que celle d'eclipse


-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
19 févr. 2012 à 15:36
Yop,

Tu va me dire qu'avec Swing y a pas moyen d'avoir une fenêtre construite correctement J'ai pas spécialement envie de tout reprendre pour passer sous swt...

Parce qu'en soit la construction de ma Jtoolbar ne pose pas de probléme...C'est au moment de l'imbrication dans le contentPane de ma Frame!

Je devrais me recréer un layout si je comprends bien pour simuler un borderlayout avec une zone North qui se resize en hauteur...

Avec mon GridBagLayout je défini des zones mais j'ai pas l'impression que ces zones se resize lorsque je diminue ma frame jusqu’à sa MinSize.

CDT
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
19 févr. 2012 à 15:58
Salut,

Je ne dis pas qu'en swing c'est pas possible, mais simplement que si tu ne trouves pas ton bonheur avec tous les layout proposés par défaut (y compris le SpringLayout), que les combinaisons de layout répondent pas à ton besoin...
Tu risques de devoir le faire toi même (les layout en java c'est bien quand tu l'utilises mais c'est chiant quand tu le fais...), du coup je me suis dis que dans l’éventualité ou ton HMI ne soient pas très évoluée tu pourrais switcher sur SWT mais si tu l'as trop avancée ça fera autant de taf...



-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
20 févr. 2012 à 11:25
Salutation le monde,

Personnellement, j'utilise la librairie forms de JGoodies... Le layout qu'il propose (formlayout) a toujours répondu à mes besoin sans jamais me décevoir... Maintenant même si j'ai bon espoir que cela réponde à tes attentes, je ne peux pas te le promettre...

http://www.jgoodies.com/freeware/forms/index.html
0
Rejoignez-nous