Question

J'essaie d'empêcher la GridLayout dans un JPanel de remplir les cellules entièrement et en ignorant tout setSize des composants

Je suis en utilisant ce code:

import javax.swing.*;
import java.awt.*;

public class GrideComponents{
  public static void main(String[] args) {
    JFrame frame = new JFrame("Laying Out Components in a Grid");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel(new GridLayout(5,2,0,0));
    panel.add(new JLabel("Enter name"));
    JTextField a = new JTextField(5);
    a.setSize(10, 10);
    panel.add(a);
    panel.add(new JLabel("Enter Roll"));
    panel.add(new JTextField(3));
    panel.add(new JLabel("Enter Class"));
    panel.add(new JTextField(3));
    panel.add(new JLabel("Enter Total Marks"));
    panel.add(new JTextField(3));
    panel.add(new JButton("Ok"));
    panel.add(new JButton("Cancel"));
    frame.add(panel);
    frame.setSize(400,400);
    frame.setVisible(true);
  }
}

Et chaque composant remplit la cellule de gris au lieu d'être dans la taille spécifiée.

Merci

Était-ce utile?

La solution

Lire le tutoriel Swing sur Utiliser le gestionnaire de mise en page pour vous comprendre les bases de la façon dont fonctionnent les gestionnaires de mise en page.

A GridLayout redimensionne tous les composants à la même taille.

Lors de la création d'une forme, généralement, vous imbriquer différents panneaux en utilisant différents gestionnaires de mise en page pour obtenir l'effet que vous désirez.

Dans ce cas, vous pouvez utiliser un FlowLayout pour les boutons. Ensuite, vous pouvez utiliser un GridBagLayout ou SpringLayout pour les autres composants.

Autres conseils

Avez-vous essayé d'installer setMaximumSize et setPreferredSize?

Dans tous les cas, je vous recommande d'essayer MiGLayout pour tous vos besoins de mise en page. Vous serez surpris par sa simplicité!

Le point entier de GridLayout est de la mise en page des composants dans une grille régulière. Vos appels setSize seront remplacés par le gestionnaire de mise en page. Peut-être setPreferredSize ou setMaximumSize peuvent fonctionner, mais il appartient au gestionnaire de mise en page de décider de les prendre en compte.

BoxLayout est un utile alternatif dans ce contexte, comme on le voit dans cet exemple .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top