GridLayout grid = new GridLayout(4, 4, 10, 10);
//Add the grid to the frame
frame.setLayout(grid);
for (int i = 0; i < 16; i++){
frame.add(new JButton("Button: " + i)
.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("you clicked me!");
}
}));
}
我想知道为什么它一直给我带来麻烦,为网格上的每个按钮添加一个动作监听器。
基本上我正在尝试打印网格上按钮的位置。 例如:按钮3是位置(0,3)
答案 0 :(得分:1)
您正在向框架添加addActionListener
方法的结果,即void。
这应该有效:
for (int i = 0; i < 16; i++) {
JButton button = new JButton("Button: " + i);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("you clicked me!");
}
});
frame.add(button);
}
答案 1 :(得分:0)
JButton.addActionListener()不会返回JButton。它返回void。要修复,请创建一个新的JButton,然后添加它。
frame.setLayout(grid);
for(int i = 0; i < 16; i++){
JButton j = new JButton("Button: " + i);
j.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("you clicked me!");
}
}));
frame.add(j);
}
希望这有帮助。