it-swarm.com.de

Wie verhindere ich, dass JTextFields in einem Java Swing BoxLayout erweitert wird?

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 JTextFields 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 JTextFields zu verhindern? Ich bin ziemlich neu in Swing, also lass es mich wissen, wenn ich alles schrecklich falsch mache.

20
Matthew
textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );
40
camickr

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));
28
cbrown

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());
1
damix911

legen Sie die maximale Höhe fest. oder legen Sie sie in einen Bildlaufbereich

0
Randy