public class ButtonGrid extends JFrame{
private final JButton[][] grid;
private int length,width;
public ButtonGrid(int width,int length){
JPanel panel = new JPanel();
JButton start = new JButton("Start");
JButton reset = new JButton("Reset");
panel.add(start);
//start.addActionListener(this);
panel.add(reset);
add(panel,BorderLayout.PAGE_START);
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(width,length));
grid = new JButton[width][length];
for(int y=0; y<length; y++){
for(int x=0; x<width; x++){
grid[x][y]=new JButton();
grid[x][y].setBackground(Color.WHITE);
panel1.add(grid[x][y]);
grid[x][y].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Object source = e.getSource();
JButton b1 = (JButton)source;
if(b1 == source){
b1.setBackground(Color.BLACK);
}
}
});
reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Object source = e.getSource();
JButton b1 = (JButton)source;
if(b1 == source){
b1.setBackground(Color.WHITE);
}
}
});
}
}
add(panel1,BorderLayout.CENTER);
panel1.setBackground(Color.RED);
setSize(600,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
ButtonGrid bg = new ButtonGrid(25,25);
}
});
}
}
電網在這段代碼中,我能夠改變在網格中的按鍵背景,但我想通過再次改變背景,以白色網格復位。我無法做到這一點,因爲我的actionListener不允許使用grid [x] [y]設置背景。請幫助我如何繼續。我想重置通過復位按鈕
重置按鈕應該做什麼?重置*全部*按鈕? – Holger
注意:'if(b1 == source)'檢查是不必要的。你的'ActionListener'只會被你註冊它的按鈕調用,沒有別的。 – Holger
更重要的是你要添加actionlistener來重置for循環。對我來說這似乎是無稽之談。你的'grid []] []'是在類上下文中聲明的。當然你可以從任何成員方法或嵌套類訪問它。 – Sage