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.

Wie kann ich die Leerzeichen zwischen den Komponenten in ein GridBagLayout?

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 wie cost = 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 😉

InformationsquelleAutor Astinog | 2015-02-09
Schreibe einen Kommentar