Wie kann ich die Leerzeichen zwischen den Komponenten in ein GridBagLayout?
In ein JFrame mit BorderLayout, ich habe ein "control panel" (mit Tasten und so Zeug) auf der Unterseite des Fensters. In dem JPanel, dieses "control panel" würde ich gerne ein GridBagLayout.
Dies ist das Ergebnis habe ich jetzt.
Ich dachte, ich teilen Sie das layout in einem 3 Zeilen x 8 Spalten der Tabelle.
In dieser Konfiguration werden die " + " - symbol sollte an einem Platz und alle Tasten sollten füllen Sie die Systemsteuerung.
Der code ist:
buttonsPanel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
removeCost = new JButton("-");
c.gridx = 5;
c.gridy = 0;
buttonsPanel.add(removeCost, c);
addCost = new JButton("+");
c.gridx = 7;
c.gridy = 0;
buttonsPanel.add(addCost, c);
text = new JLabel("Incasso");
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 3;
buttonsPanel.add(text, c);
cost = new JTextArea();
cost.setBorder(BorderFactory.createLineBorder(Color.black, 1, true));
cost.setPreferredSize(new Dimension(80, 18));
c.gridx = 5;
c.gridy = 1;
c.gridwidth = 3;
buttonsPanel.add(cost, c);
cancel = new JButton("Cancella");
c.anchor = GridBagConstraints.LINE_START;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 3;
c.insets = new Insets(0, 2, 2, 30);
buttonsPanel.add(cancel, c);
enter = new JButton("Accetta");
c.anchor = GridBagConstraints.LINE_END;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 5;
c.gridy = 2;
c.gridwidth = 3;
c.insets = new Insets(0, 30, 2, 2);
buttonsPanel.add(enter, c);
Was mache ich falsch?
- Sie geben die Swing-Komponenten eines GridBagLayout in Spalte, dann Zeile layout um. Sie schaffen Raum zwischen den Komponenten, indem Sie mit Hilfe Einlagen.
- Siehe die Antwort, white-space in einer Swing GUI.
cost = new JTextArea(); .. cost.setPreferredSize(new Dimension(80, 18));
sollte mehr wiecost = new JTextArea(3,40);
. Siehe Sollte ich vermeiden Sie die Verwendung von set(Preferred|Maximum|Minimum)Größe Methoden in Java Swing? (ja.)- Dann haben Sie das gridWidth-Eigenschaft, aber nicht zurücksetzen, bevor Sie die Einschränkungen wieder, seien Sie vorsichtig mit, dass
- die gridwidth für die ersten beiden Komponenten ist nicht festgelegt, und dann ist es für jede Komponente. Also ich denke, dass ist nicht das problem
- Ich denke, es ist "Teil" des Problems, aber none-the-less, Sie müssen sich nur hüten Sie sich vor es 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht erstellen Sie eine neue Instanz der GridBagConstrains. Ich Tat so.
Führe ich den code. Bitte siehe screenshot.
Müssen Sie dieses Verhalten?
Müssen Sie erstellen eine neue Instanz der
GridBagConstraints
(c = new GridBagConstraints
) jedes mal, wenn Sie verwenden es als parameter der add-Methode.