Hallo zusammen,
ich habe ein kleines Problem mit dem GridBagLayout. Bei einem Click auf den Button "Add Node" soll ein neuer Button dem JPanel "nodeArea" (nutzt das BoxLayout) hinzugefügt werden (Button "Node"). Das JPanel ist dem GridBagLayout zugewiesen und nimmt zwei Zeilen in der Höhe ein. Dies funktioniert bei der ersten Zeile. Bei allen weiteren Zeilen nimmt das JPanel nur noch eine Zeile ein.
So sieht die Oberfläche aktuell aus:

Das wäre der Code Schnipsel:
In der Klasse "Node" wird in der Methode "addNewNodeContainer()" lediglich der JButton "Node" einem JPanel hinzugefügt und dann übergeben.
Gerne kann ich Euch noch mehr Code schicken.
Könnt Ihr mir sagen, wo der Fehler liegt, damit das JPanel "nodeArea" durchgehend zwei Zeilen überspannt?
Viele Grüße und einen schönen Abend
A456B123
ich habe ein kleines Problem mit dem GridBagLayout. Bei einem Click auf den Button "Add Node" soll ein neuer Button dem JPanel "nodeArea" (nutzt das BoxLayout) hinzugefügt werden (Button "Node"). Das JPanel ist dem GridBagLayout zugewiesen und nimmt zwei Zeilen in der Höhe ein. Dies funktioniert bei der ersten Zeile. Bei allen weiteren Zeilen nimmt das JPanel nur noch eine Zeile ein.
So sieht die Oberfläche aktuell aus:

Das wäre der Code Schnipsel:
Java:
JButton addNode = new JButton("Add Node");
addNode.setPreferredSize(new Dimension(120, 50));
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.VERTICAL;
gbc.insets = new Insets(4, 4, 4, 4);
gbc.gridx = 0;
gbc.gridy = rowCounterAddNode; // 0
subsubPanel.add(addNode, gbc);
JButton removeRow = new JButton("Remove Row");
removeRow.setPreferredSize(new Dimension(120, 50));
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.VERTICAL;
gbc.insets = new Insets(4, 4, 4, 4);
gbc.gridx = 0;
gbc.gridy = rowCounterRemoveRow; // 1
subsubPanel.add(removeRow, gbc);
JPanel nodeArea = new JPanel();
nodeArea.setLayout(new BoxLayout(nodeArea, BoxLayout.X_AXIS));
nodeArea.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.gridheight = 2;
gbc.gridx = 1;
gbc.gridy = rowCounterAddNode;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(4, 4, 4, 4);
addNode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Node node = new Node();
nodeArea.add(node.addNewNodeContainer());
nodeArea.revalidate();
nodeArea.repaint();
}
});
rowCounterAddNode += (rowCounterRemoveRow + 1);
rowCounterRemoveRow += (rowCounterAddNode + 1);
subsubPanel.add(nodeArea, gbc);
subsubPanel.revalidate();
subsubPanel.repaint();
In der Klasse "Node" wird in der Methode "addNewNodeContainer()" lediglich der JButton "Node" einem JPanel hinzugefügt und dann übergeben.
Gerne kann ich Euch noch mehr Code schicken.
Könnt Ihr mir sagen, wo der Fehler liegt, damit das JPanel "nodeArea" durchgehend zwei Zeilen überspannt?
Viele Grüße und einen schönen Abend
A456B123