Java : aide pour choisir un Layout

Fermé
Schloufi - 4 août 2011 à 23:23
 Schloufi - 5 août 2011 à 11:14
Bonjour,

je suis actuellement en train de coder une application en JAVA assez simple, mais je n'arrive pas à trouver un LayoutManager correspondant à ce que je veux faire.
J'ai une JFrame principale dans laquelle je souhaite ajouter 2 composants l'un sur l'autre : un PCanvas (API piccolo2d) et une JScrollPane.

Jusque là tout va bien, seulement j'aimerais préciser des proportions pour chacun des composants, par exemple le PCanvas prend les 3/4 de la fenêtre et le JScrollPane le 1/4 restant.

Or avec un GridLayout(2,1), je n'arrive pas à faire cela. Les proportions restent égales. Que me conseillez-vous ?

Merci d'avance.


A voir également:

3 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
4 août 2011 à 23:45
Avec un GridBagLayout (voir le tutoriel How to Use GridBagLayout)
0
Merci pour ta réponse rapide !
Je viens d'essayer le GridBagLayout, mais je pense que je n'ai pas tout compris...
J'ai essayé un truc comme ça, pour que mon canvas prenne les 2/3 supérieurs de l'écran et la scrollPane le 1/3 inférieur.

		this.getContentPane().setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();

		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 0;
		c.gridy = 0;
		c.gridwidth = 3;
		c.gridheight = 2;
		this.getContentPane().add(canvas, c);

		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 0;
		c.gridy = 2;
		c.gridwidth = 3;
		this.getContentPane().add(scrollPane, c);


Mais au final ma fenêtre ne comporte qu'une sorte de tache au milieu de l'écran...
Je n'ai jamais utilisé de GridBagLayout et j'avoue que j'ai un peu de mal à voir d'où vient le problème.

Merci d'avance !
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 5/08/2011 à 01:24
Voici un exemple complet avec deux Button. J'espère que tu y verras mieux ;-)
Le bouton du haut prend 2/3 de la hauteur, celui du bas 1/3.

import java.applet.Applet;
import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
 
public class Test
{
public static void main(String[] args) public static void main(String[] args) 
{
GridBagLayout g = new GridBagLayout();

Applet a = new Applet();
	a.setLayout(g);
       
GridBagConstraints c = new GridBagConstraints();
	c.fill = GridBagConstraints.BOTH;
	c.gridwidth = GridBagConstraints.REMAINDER; 

Button b1 = new Button("Bouton 1");
{
	c.gridx=0; // Colonne 0
	c.gridy=0; // Ligne 0
	c.weightx = 1.0; // Largeur 1
	c.weighty = 2.0; // Hauteur 2
	
	g.setConstraints(b1, c);
}
a.add(b1);
 
Button b2 = new Button("Bouton 2"); 
{
	c.gridx=0; // Colonne 0
	c.gridy=1; // Ligne 1
	c.weightx = 1.0; // Largeur 1
	c.weighty = 1.0; // Hauteur 1
	
	g.setConstraints(b2, c);
}
a.add(b2);

JFrame f = new JFrame("");
	f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	f.add(a); 
	f.pack();
	f.setLocationRelativeTo(null);
	f.setVisible(true);
}
}

La confiance n'exclut pas le contrôle
0
J'ai réussi à faire mon truc en m'inspirant grandement de ton programme et je comprend mieux le GridBagLayout maintenant ;)

Merci beaucoup à toi !
0