Ich habe eine JPanel
, die ungefähr so aussieht:
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.
Mein Problem ist, dass die JTextField
s vertikal sehr groß werden. Ich möchte, dass sie nur für eine einzelne Zeile hoch genug sind, da der Benutzer sie nur eingeben kann. Die Schaltflächen sind in Ordnung (sie werden nicht vertikal erweitert).
Gibt es eine Möglichkeit, die Erweiterung der JTextField
s zu verhindern? Ich bin ziemlich neu in Swing, also lass es mich wissen, wenn ich alles schrecklich falsch mache.
textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );
Wenn Sie möchten, dass sich die Breite ändert, behalten Sie die Einstellung auf MAX INT. So...
textField.setMaximumSize ( neue Dimension (Integer.MAX_VALUE, textField.getPreferredSize (). height));
In meinem Fall brauche ich eine Kombination aller Antworten, damit es richtig funktioniert. Wenn ich keinen Klebstoff verwende, ist er nicht vertikal zentriert; Wenn ich die maximale Größe nicht einschränke, erstreckt sie sich vertikal. Wenn ich Breite und Höhe einschränke, ist sie zu klein und nur breit genug, um den Initialisierungstext aufzunehmen.
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());
legen Sie die maximale Höhe fest. oder legen Sie sie in einen Bildlaufbereich