【发布时间】:2014-02-24 16:36:00
【问题描述】:
您好,我只是在处理数组,在 3 x 3 网格中创建 2D 数组时遇到了一些问题。
下面是我用 9 个按钮创建的一维数组的示例,它在 atm 上运行良好,因为它显示了所有 9 个按钮。
frame.setLayout(new GridLayout(3,3));
JButton[] buttons = new JButton[9];
for (int i = 0; i < buttons.length; i++){
buttons[i] = new JButton();
frame.add(buttons[i]);
buttons[i].setText(".");
但是,当我尝试使用 2D 数组执行此操作时,仅显示 12 个按钮中的 6 个。
frame.setLayout(new GridLayout(3,3));
JButton[][] buttons = new JButton[3][3];
for (int i = 0; i < buttons.length; i++){
for (int j = 0; j < buttons.length; j++){
buttons[i][j] = new JButton();
frame.add(buttons[i][j]);
buttons[i][j].setText(".");
}
}
另外,我还有一个问题,要调用每个单独的按钮,我需要这样做吗?
button[0].setText("button 1");
是否可以给每个按钮一个名称,例如代替按钮[0],是否可以有按钮1,等等。
谢谢。
【问题讨论】:
-
看看循环。两者都有
i++。 -
如果你想让组件有一个名字,使用
setName..setText是按钮中显示的文字 -
另外请记住,3x3 2D 阵列不足以容纳 12 个按钮。
-
如果您使用 setName,您可以使用 getName 来获取按钮名称。您仍然必须从数组中引用它们。或者,您可以将按钮声明为
JButton button0 = new Button(),然后将其作为buttons[0]=button0添加到您的数组中。然后你有一个可以使用的单独引用,但你需要单独声明它们。 -
如果你不使用数组......但你可以区分一个按钮,例如你有
buttons[0][0].getName().equals("button1")然后你知道按钮是什么,如果你不想这样做你仍然可以将您的按钮而不是数组存储在Map<String,JButton>