Redimensionnement des composants en même temps que la fenêtre [Résolu]

Signaler
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
-
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
-
Bonjour,

je suis entrain de créer un logiciel en Java.
Je construit mon interface sans layout afin de pouvoir placer tous mes composants où je le désire.
Mon problème intervient lorsque je modifie la taille de la fenêtre. La taille des composants ne change pas en même temps.

Savez-vous comment faire pour remédier à ceci ?

Merci.
Bonne journée.

8 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
Salut,

Il faut que tu utilises des layout, tu n'as pas le choix.

L'autre solution est d'utiliser la taille de la fenêtre pour faire tes setBounds dans la méthode paintComponent mais c'est vraiment très moche.
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
10
Personnellement, je conseille toujours la librairie Forms de JGoodies...
Elle est plus simple que le GridBackLayout et te permet de faire tout et n'importe quoi... De plus leurs tutoriels sont comme je les aime, simple rapide efficace...

Forms - JGoodies
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Je suis d'accord avec toi mais avec un layout existant pour faire exactement ce qu'on veut avec les composants ça me parait compliqué.

Celui qui à l'air de laisser le plus libre est GridBagLayout d'après ce que j'ai pu lire sur internet mais ça à l'air compliqué à mettre en place.

Il y quelque chose que je ne dois pas faire correctement car lorsque je fais :
public class View extends JFrame{
 
private JPanel panelLateral = new JPanel();
 
  public View()
  {
   this.getContentPane().setLayout(new GridBagLayout());
  GridBagConstraints placementPanelLateral  = new GridBagConstraints();       
        placementPanelLateral.gridx = 20;
        placementPanelLateral.gridy = 100;
        placementPanelLateral.gridwidth = 120;
        placementPanelLateral.gridheight = 550;
        this.getContentPane().add(panelLateral,placementPanelLateral);
 
        this.setVisible(true);
    }
}


j'ai un petit carré au milieu de ma fenêtre et pas du tout le panel que je souhaiterai avoir.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
En effet, tu n'utilises pas le gridBagLayout comme il le faut, gridx n'est pas l'abscisse du point haut gauche du composant à placer mais l'indice du composant à placer.

Je te conseil de relire le tutoriel sur GridBagLayout, tu n'as pas tout saisi je pense.

C'est vrai que l'utilisation des layout a un coût d'entrée mais c'est vraiment le plus simple et le plus efficace.
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Je viens de lire le tutoriel mais je n'arrive pas du tout à placer mes composants.

Voici ce que j'ai compris :

- gridx et gridy représentent les coordonnées ((0,0) étant la "case" en haut à gauche).
- fill permet de mettre un composant sur toute la largeur et/ou toute la hauteur de la fenêtre.
- gridwidth et gridheight, je ne comprend pas vraiment. D'après ce que je pensais avoir compris, ils permettent de définir le nombre de lignes et de colonnes dans la fenêtre.
- ipadx et ipady permettent de régler la taille du composant.
- instets permet de régler la distance entre un composant et les bords de la "case".
- anchor permet de placer le composant à l'intérieur de la "case".
- weightx et weighty je ne vois pas vraiment.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
Attends deux minutes, je te poste un petit tutoriel
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Merci beaucoup, je pense avoir compris comme ça fonctionne.