Java : aide pour choisir un Layout
Schloufi
-
Schloufi -
Schloufi -
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.
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.
3 réponses
-
-
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 !
-
-
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 -
J'ai réussi à faire mon truc en m'inspirant grandement de ton programme et je comprend mieux le GridBagLayout maintenant ;)
Merci beaucoup à toi !