import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FlexGrid implements ItemListener, ActionListener {
private JButton button;
private JPanel panel;
private JComboBox rowBox, colBox, spaceBox;
public FlexGrid(){
JFrame frame = new JFrame("Flexibles Gitter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
JPanel boxPanel = new JPanel(new GridBagLayout());
boxPanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 10, 0));
GridBagConstraints gbc = new GridBagConstraints();
String[] comboBoxModel = new String[] {"1", "2", "3", "4", "5", "6", "7", "8"};
rowBox = new JComboBox(comboBoxModel);
rowBox.addItemListener(this);
colBox = new JComboBox(comboBoxModel);
colBox.addItemListener(this);
spaceBox = new JComboBox(comboBoxModel);
spaceBox.addItemListener(this);
gbc.gridx = 0;
boxPanel.add(new JLabel("Zeilen:"), gbc);
gbc.gridx++;
boxPanel.add(rowBox, gbc);
gbc.gridx++;
gbc.insets = new Insets(0, 10, 0, 0);
boxPanel.add(new JLabel("Spalten:"), gbc);
gbc.gridx++;
gbc.insets = new Insets(0, 0, 0, 0);
boxPanel.add(colBox, gbc);
gbc.gridx++;
gbc.insets = new Insets(0, 10, 0, 0);
boxPanel.add(new JLabel("Zellabstand:"), gbc);
gbc.gridx++;
gbc.insets = new Insets(0, 0, 0, 0);
boxPanel.add(spaceBox, gbc);
frame.add(boxPanel, BorderLayout.NORTH);
frame.add(panel);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
int rows = Integer.parseInt(rowBox.getSelectedItem().toString());
int colums = Integer.parseInt(colBox.getSelectedItem().toString());
int cellSpace = Integer.parseInt(spaceBox.getSelectedItem().toString());
panel.removeAll();
panel.setLayout(new GridLayout(rows, colums, cellSpace*2, cellSpace*2));
for (int i = 0, j = rows * colums; i < j; i++){
button = new JButton(String.valueOf(i+1));
button.setFocusPainted(false);
button.setFocusable(false);
button.addActionListener(this);
panel.add(button);
}
panel.validate();
}
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
FlexGrid grid = new FlexGrid();
}
});
}
}