问题
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?
回答1:
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