【发布时间】:2018-05-08 15:12:32
【问题描述】:
我已经用 for 循环创建了 N(unknown SIZE) Jbuttons 并将它们放在框架中。 我正在尝试通过单击按钮编号 x 来显示消息“按钮编号 x”。 在第二个 for 循环中,当我尝试创建 N ActionListener 时出现了一些错误。
错误
我在封闭范围内定义的局部变量必须是最终的或有效的最终
代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class program extends JFrame{
final int N = 10;
final int JUMPS = 210;
private JButton[] buttons = new JButton[N];
public program(){
super("test");
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < N; i++) {
buttons[i] = new JButton("" + i);
buttons[i].setBounds((i % 4) * JUMPS, (i / 4) *JUMPS , 200, 200);
add(buttons[i]);
}
for (int i = 0; i < N; i++) {
buttons[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Button number " + i);
}
});
}
pack();
setVisible(true);
}
public static void main(String[] args) {
program mainGUI = new program();
}
}
你有解决这个错误的办法吗?
【问题讨论】:
-
不要使用 setBounds() 来设置按钮的大小/位置。而是使用
GridLayout。让布局管理器为您完成工作。阅读 How to Use GridLayout 上的 Swing 教程部分,了解更多信息和工作示例。 -
另外,不需要两个循环。只需在创建按钮时将 ActionListener 添加到按钮即可。
标签: java swing loops jbutton actionlistener