I am working on a simple GUI where there is an isle between the first two columns and the next two columns of JButtons. The code looks as follows:
JPanel panel = new JPanel(new GridLayout(50, 4));
JScrollPane scrollable = new JScrollPane(panel);
for (int row = 0; row < rows; row++) {
for (int column = 0; column < columns; column++) {
JButton button = new JButton("Row " + row + " seat " + column);
panel.add(button);
}
}
Current Look How do I add an isle in the middle between the first two and last two columns using java swing?
Use two panels...
You could use two panels (for the seats) and one of the isle, for example...
JPanel left = new JPanel(new GridLayout(0, 2));
JPanel isle = new JPanel();
JPanel right = new JPanel(new GridLayout(0, 2));
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 4; col++) {
JButton btn = new JButton("Row " + row + " seat " + col);
if (col < 2) {
left.add(btn);
} else {
right.add(btn);
}
}
}
setLayout(new GridLayout(1, 3));
add(left);
add(isle);
add(right);
Use a "filler" component...
You could place a "filler" component between the 2nd and 3rd columns...
setLayout(new GridLayout(0, 5));
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 4; col++) {
JButton btn = new JButton("Row " + row + " seat " + col);
if (col == 2) {
add(new JPanel());
}
add(btn);
}
}
Use GridBagLayout
and apply insets
to produce a gap...
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
for (int row = 0; row < 10; row++) {
gbc.insets = new Insets(1, 1, 1, 1);
for (int col = 0; col < 4; col++) {
JButton btn = new JButton("Row " + row + " seat " + col);
if (col == 2) {
gbc.insets = new Insets(1, 40, 1, 1);
} else {
gbc.insets = new Insets(1, 1, 1, 1);
}
add(btn, gbc);
gbc.gridx++;
}
gbc.gridy++;
gbc.gridx = 0;
}
来源:https://stackoverflow.com/questions/33227532/spacing-between-columns-of-jbuttons