Hallo zusammen, ich habe folgenden Code:
Für dimension = 1,2,3 bekomme ich nun folgende Ergebnisse (andere Dimensionen sind nicht vorgesehen, das Handling dafür kommt noch):



Direkt fällt natürlich auf, dass der immer nur ein JTextfield anzeigt, obwohl mehrere da sein sollten, ich verstehe aber nicht, wieso das nicht gemacht wird.
Außerdem habe ich ein paar Probleme beim anordnen der Komponenten: Der Titel soll bei allen auf der Höhe sein, auf der er bei dimension = 3 ist. Der Button soll bei allen auf der selben Höhe sein und zwar ungefähr seine jetzige Position bei dimension = 3 minus seiner Höhe und die Labels + dazugehörige TextFields sollen zwischen Header und Button horizontal zentriert werden.
Java:
private final Dimension size = new Dimension(250, 300);
private final String title = "Add Point";
private JLabel[] labels;
private String[] labelNames = { title, "x", "y", "z" };
private JTextField[] inputFields;
private JButton addButton;
public AddPointFrame(int dimenion) {
labels = new JLabel[labelNames.length];
inputFields = new JTextField[3];
setPreferredSize(size);
setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
GridBagLayout layout = new GridBagLayout();
GridBagConstraints gbc;
setLayout(layout);
// header
labels[0] = new JLabel(labelNames[0]);
labels[0].setFont(new Font("Arial", 5, 20));
GridBagConstraints gbcHeader = makegbc(0, 0, 2, 0);
gbcHeader.anchor = GridBagConstraints.NORTH;
gbcHeader.insets = new Insets(0, 20, 30, 20);
layout.setConstraints(labels[0], gbcHeader);
add(labels[0]);
for (int i = 1; i < dimenion + 1; i++) {
// Label
gbc = makegbc(0, i, 1, 1);
gbc.insets = new Insets(20, 40, 0, 0);
labels[i] = new JLabel(labelNames[i]);
layout.setConstraints(labels[i], gbc);
add(labels[i]);
// Text-field
gbc = makegbc(1, 1, 1, 1);
gbc.weightx = 100;
gbc.insets = new Insets(20, 20, 0, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
inputFields[i - 1] = new JTextField();
layout.setConstraints(inputFields[i - 1], gbc);
add(inputFields[i - 1]);
System.out.println(i - 1);
}
// Ende-Button
addButton = new JButton("Add");
addButton.setPreferredSize(new Dimension(size.width / 2, 20));
gbc = makegbc(0, 4, 2, 0);
gbc.insets = new Insets(40, 20, 40, 20);
layout.setConstraints(addButton, gbc);
add(addButton);
pack();
setVisible(true);
repaint();
}
private GridBagConstraints makegbc(int x, int y, int width, int height) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
return gbc;
}
Für dimension = 1,2,3 bekomme ich nun folgende Ergebnisse (andere Dimensionen sind nicht vorgesehen, das Handling dafür kommt noch):



Direkt fällt natürlich auf, dass der immer nur ein JTextfield anzeigt, obwohl mehrere da sein sollten, ich verstehe aber nicht, wieso das nicht gemacht wird.
Außerdem habe ich ein paar Probleme beim anordnen der Komponenten: Der Titel soll bei allen auf der Höhe sein, auf der er bei dimension = 3 ist. Der Button soll bei allen auf der selben Höhe sein und zwar ungefähr seine jetzige Position bei dimension = 3 minus seiner Höhe und die Labels + dazugehörige TextFields sollen zwischen Header und Button horizontal zentriert werden.