J'ai un JPanel
qui ressemble à ceci:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
...
panel.add(jTextField1);
panel.add(Box.createVerticalStrut(10));
panel.add(jButton1);
panel.add(Box.createVerticalStrut(30));
panel.add(jTextField2);
panel.add(Box.createVerticalStrut(10));
panel.add(jButton2);
... //etc.
Mon problème est que les JTextField
s deviennent énormes verticalement. Je veux qu’ils ne soient assez hauts pour une seule ligne, car c’est tout ce que l’utilisateur peut saisir. Les boutons sont bons (ils ne se développent pas verticalement).
Existe-t-il un moyen d'empêcher le JTextField
s de se développer? Je suis plutôt nouveau dans Swing, alors laissez-moi savoir si je fais tout horriblement mal.
textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );
Si vous voulez que la largeur continue à changer, maintenez-la simplement sur MAX INT. Alors...
textField.setMaximumSize ( nouvelle dimension (Integer.MAX_VALUE, textField.getPreferredSize (). height));
Dans mon cas, j'ai besoin d'une combinaison de toutes les réponses pour que cela fonctionne correctement. Si je n'utilise pas de colle, elle n'est pas centrée verticalement; si je ne limite pas la taille maximale, elle s’étend verticalement; si je restreins la largeur et la hauteur, elle est trop petite, elle est juste assez large pour contenir le texte d’initialisation.
textField = new JTextField("Hello, world!");
textField.setMaximumSize(
new Dimension(Integer.MAX_VALUE,
textField.getPreferredSize().height));
Box box = Box.createVerticalBox();
box.add(Box.createVerticalGlue());
box.add(textField);
box.add(Box.createVerticalGlue());
définir la hauteur maximale. ou les placer dans une zone de défilement