# Java > Interfaces Graphiques en Java > AWT/Swing >  Comment adapter la taille des composants en fonction de la rsolution de l'cran ?

## phoenix420

Aucune rponse ne me satisfait sur le net ou dans le forum...

J'ai dvelopp une application qui est destine  tourner sur diffrents postes. Mais ils n'ont pas tous la mme rsolution d'cran, et selon la rsolution les composants s'affichent plus petits ou non.

J'aimerais que l'application adapte la taille des composants selon la rsolution de l'cran, voire de modifier la rsolution de l'cran  ma guise pendant que l'appli tourne.

Comment faire ?

J'utilise une JFrame principale qui contient 2 panels superposs grce  un BoxLayout.
Mon premier panel n'a pas besoin de layout et le deuxime utilise un GridBagLayout.

----------


## Ivelios

La question aurait put tre pos de cette faon : Comment gard la mme proportion entre les composants de ma fentre quand je la redimensionne?
Rponse : Normalement en grant bien les paramtres de ton GridBagLayout tu devrais t'en sortir.  ::ccool:: 

Envoie le code o tu bloque si tu n'y arrive pas

----------


## phoenix420

Oui on peut le dire comme a aussi en effet.
J'avais bloqu le redimensionnement de la fentre justement pour essayer de rgler le problme mais bon ... Bidouille bidouille  ::lol::  .

Voici ma classe o je dfinis mon interface graphique :



```

```



Je ne comprends pas trop comment arriver  mes fins en rglant le GirdBagLayout.

----------


## Ivelios

Je ne suis pas sur mon pc donc pas Netbeans  ::?: , mais je regarde a dans la soire  :;):

----------


## phoenix420

Merci beaucoup !

----------


## phoenix420

Bonjour.

Quelqu'un a pu se pencher un peu sur ce problme s'il-vous-plat ?
Il ne me reste que ce problme  rgler pour terminer mon application (normalement ... je croise des doigts  ::mouarf::  ...).

Merci !

----------


## sinok

En mme temps tu place quasiment systmatiquement le fill de tes GridBagContraints  NONE, ce qui fait que tes composants prennent leur taille par dfaut et n'essaie pas de rcuprer l'espace disponible, c'est bon dans le cas des libells, bien moins dans le cas des autres composants. De plus  aucun moment tu ne fixe les coeffs de redimensionnement que sont weightx et weighty. De fait ton layout devient totalement statique car ces deux coeffs on pour valeur 0.0 par dfaut.

----------


## phoenix420

Oui a on m'avait fait la remarque concernant le fill car avant je mettais les points cardinaux alors que cela n'est pas possible.

Mais je ne vois pas comment le fill peut m'aider dans mon cas de figure, ni comment fonctionnent vritablement weightx et weighty. A quoi correspondent les valeurs que prennent ces deux poids ?

----------


## sinok

Le fill correspond  la faon dont le composant occupera l'espace fourni par la case du GridBagLayout dans laquelle il se trouve.

Un fill en NONE fera en sorte que le composant se dimensionnera directement  sa preferredSize et n'en bougera jamais, en particulier quand la fentre sera redimensionne.
Un fill en HORIZONTAL fera en sorte que le composant occupe l'intgralit de l'espace horizontal fourni par la case
Un fill en VERTICAL fera en sorte que le composant occupe  l'intgralit de l'espace vertical fourni par la case
Un fill en BOTH fera en sorte que le composant occupe  l'intgralit de l'espace horizontal et vertical fourni par la case.


Les weight dfinissent la faon dont se rpartissent les case du GridBagLayout lors de l'attribution de taille supplmentaire au conteneur.

un weight  0.0f signifie que la case n'obtiendra aucun espace lors du redimensionnement.
Un weight  1.0f signifie que la case n'obtiendra un maximum d'espace lors du redimensionnement.

Ca te convient comme explication.

Pour le reste c'est par l: http://java.sun.com/docs/books/tutor...t/gridbag.html


A noter que pour les anchor il est amplement prfrable d'utiliser les valeurs alignant les composants sur une mme ligne, c'est  dire:

GridBagConstraints.BASELINE
  GridBagConstraints.BASELINE_LEADING
  GridBagConstraints.BASELINE_TRAILING
  GridBagConstraints.ABOVE_BASELINE
  GridBagConstraints.ABOVE_BASELINE_LEADING
  GridBagConstraints.ABOVE_BASELINE_TRAILING
  GridBagConstraints.BELOW_BASELINE
  GridBagConstraints.BELOW_BASELINE_LEADING
  GridBagConstraints.BELOW_BASELINE_TRAILING
Voilou

----------


## phoenix420

Merci beaucoup pour cette rponse trs complte !

Je pense avoir un peu mieux compris.

Par contre pour la proprit "anchor" j'avais dj essay avec BASELINE mais ma version d'Eclipse ne la prend pas en charge. J'ai pourtant la dernire version il me semble (Version: 1.1.0.v20090602-7e7eFAlFEx2XZoYqwI68e2F).

Si je rencontre de nouveau de problmes j'actualiserai la discussion. Merci encore !

----------


## phoenix420

En fait je ne comprends pas comment je dois m'y prendre ...

Je dois me mettre en quelle rsolution pour dvelopper mon application ?

Car si je dveloppe en 1280x260 pour que mon appli fonctionne sous toutes les rsolutions, je ne peux que dvelopper pour cette rsolution car si je diminue la rsolution cela ne fonctionne pas, idem pour les rsolutions suprieures.

Et sinon avec la proprit "fill" je n'obtiens pas du tout ce que je veux si je mets HORIZONTAL, VERTICAL ou bien BOTH. C'est trs moche quand je change de rsolution ...

Et les polices (Font) sont censes s'agrandir et se rduire automatiquement en cas de changement de rsolution ? Car je n'en ai pas l'impression  ::?: 


Je colle mon nouveau code .... :



```

```

----------


## sinok

L'indpendance vis  vis des rsolutions est une autre histoire.

cd http://www.javalobby.org/java/forums/t101878.html

La seule option que je vois viable est de passer par le Look&Feel substance qui possde une option pour cela:

http://www.pushing-pixels.org/?p=143
http://www.pushing-pixels.org/?p=144
http://www.pushing-pixels.org/?p=148
http://www.pushing-pixels.org/?p=299
http://www.pushing-pixels.org/?p=1504


Par contre a ncessite que tu arrte de modifier les fontes que tu utilises dans ton appli, tu dois en permanence utiliser celles fournies par le L&F.
Et tu aurais bien deux trois autres choses  amliorer dans ton pav de code avant de vouloir te concentrer sur l'indpendance vis  vis des rsolutions (factories de composants, dsengorger ce monstrueux constructeur, externaliser tes chaines et ainsi de suite).

----------


## phoenix420

Merci beaucoup pour ces sources.

Je vais voir ce que je peux en faire ...

Pour les autres problmes de construction de mon programme, je suis bien conscient qu'il y a beaucoup  faire niveau optimisation, criture. Je suis dbutant je n'ai appris le langage Java que depuis octobre 2009.

Donc pour tout le reste, je ne sais pas encore comment m'y prendre ni o je dois faire quelques amnagements. Je verrai bien.

Merci beaucoup en tout cas !
Bonne journe !

----------

