Swing GridbagLayout JTextfield zu klein

y0dA

Top Contributor
Hallo!
Anscheinend ist die Größe von dem JTextfield abhängig davon was das größte Element in der Spalte, in welcher JTextfield liegt, ist. Wie kann ich das JTextfield größer machen?

Java:
//panelExistingConfiguration ist das Panel welches ihr am Bild sehen könnt.
		panelExistingConfiguration = new JPanel();
		panelExistingConfiguration.add(getExistingConfigurationPanel(),
				BorderLayout.CENTER);
...
...
//dieses panel wird retouniert durch die Methode getExistingConfigurationPanel()
                JPanel panel = new JPanel(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();
		panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

		gbc.ipady = 15;
		gbc.fill = GridBagConstraints.HORIZONTAL;
		gbc.weightx = 1.0;
		panel.add(getExistingConfigurationChoosePanel(), gbc);

		gbc.gridy = 1;
		panel.add(getExistingConfigurationOptionPanel(), gbc);
...
...
//dieses Panel wird retouniert durch getExistingConfigurationChoosePanel()
		JPanel panel = new JPanel(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();
		panel.setBorder(BorderFactory
				.createTitledBorder("Configuration"));
		gbc.anchor = GridBagConstraints.WEST;
		gbc.insets = new Insets(0, 15, 0, 20);
		panel.add(new JLabel(GuiConstants.LABEL_EXISTING_CONFIGURATION_DIRECTORY), gbc);
		
// hier wird das JTextfield geadded
		gbc.gridx = 1;
		gbc.gridy = 0;
		gbc.fill = GridBagConstraints.HORIZONTAL;
		gbc.weightx = 1.0;
		gbc.insets = new Insets(0, 0, 0, 5);
		panel.add(textExistingConfigurationDirectory, gbc);
//
		gbc.gridx = 2;
		gbc.fill = GridBagConstraints.NONE;
		gbc.insets = new Insets(0, 0, 0, 15);
		gbc.weightx = 0.0;
		panel.add(buttonExistingConfigurationDirectory, gbc);
 

Anhänge

  • gbcProblemJTextfield.jpg
    gbcProblemJTextfield.jpg
    40,4 KB · Aufrufe: 52
Zuletzt bearbeitet:
Das Textfeld folgendendermaßen konfigurieren:
Java:
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1.0;

Die anderen Komponenten in der Zeile müssen genau das Gegenteil bekommen:
Java:
gbc.fill = GridBagConstraints.NONE;
gbc.weightx = 0.0;
 
Das Textfeld folgendendermaßen konfigurieren:
Java:
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1.0;

Die anderen Komponenten in der Zeile müssen genau das Gegenteil bekommen:
Java:
gbc.fill = GridBagConstraints.NONE;
gbc.weightx = 0.0;

Hat leider überhaupt nichts bewirkt 🙁

**EDIT**
Nach einer kleinen Korrespondenz mit L-ectron-X ist das Problem gelöst - es lag daran dass das Panel "der höchsten Ebene" im (Konstruktor des JFrame) fälschlicherweise so initialisiert wurde:
Java:
JPanel panel = new JPanel();
panel.add(getSubPanel(), BorderLayout.CENTER);

Lösung:
Java:
JPanel panel = new JPanel(new BorderLayout());
panel.add(getSubPanel(), BorderLayout.CENTER);
 
Zuletzt bearbeitet:
Hallo y0dA,

wir hätten das Problem vielleicht auch einfacher lösen können, indem wir dem Textfeld eine gewünschte Größe gegeben hätten, etwa so:

Java:
private JTextField textExistingConfigurationDirectory = new JTextField(10);

Gruß,
André
 
Hallo y0dA,

wir hätten das Problem vielleicht auch einfacher lösen können, indem wir dem Textfeld eine gewünschte Größe gegeben hätten, etwa so:

Java:
private JTextField textExistingConfigurationDirectory = new JTextField(10);

Gruß,
André

Nein hätten wir nicht, hatte ich probiert und führte zu keiner Veränderung!
Denke das Problem an der Wurzel zu beheben ist auf jeden Fall der schönere Weg.

Trotzdem danke für den Hinweis.
 
Zuletzt bearbeitet:
Nein hätten wir nicht, hatte ich probiert und führte zu keiner Veränderung!
Denke das Problem an der Wurzel zu beheben ist auf jeden Fall der schönere Weg.

Dass es bei dir zu keiner Veränderung führte, will ja nichts sagen. Schließlich hat der andere Vorschlag bei dir erstmal auch nicht geholfen. Die Wurzel des Problems hängt ganz davon ab, was wir machen wollen. Jedenfalls ist das setzen der preferredSize ein legitimes Mittel beim Design mit GridBagLayout. Das wird auch hier erklärt: GridBagLayout - Byte-Welt Wiki

Gruß,
André
 

Neue Themen


Zurück
Oben