我制作了2d JButtons数组
public JButton[][] buttons = new JButton[5][5];
并创建了一个for循环,使这些按钮成为25次
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
buttons[i][j] = new JButton();
panel.add(buttons[i][j]);
}
}
}
现在我要做的是从上面创建的那些中随机选择一个按钮,并将其文本设置为我定义的内容,我尝试过这样,但它不起作用,它只从3个按钮中选择而不是其余的。
int r = (int) (Math.random());
buttons[r][r].setText(button[random][random].getName());
所以基本上,我想从数组中选择一个随机按钮,并将其值更改为其名称。另外,当我打印出随机打印的名称时,如何打印出当前字符串中按钮的名称。
感谢。
答案 0 :(得分:3)
表达式(int) (Math.random())
总是计算为0,因为Math.random()
返回[0, 1)
范围内的 double - 这样的双精度在转换为时总是会导致0整数。
而是创建一个新的Random对象并使用Random.nextInt(n)
在该范围内选择适当的值。例如,
Random r = new Random();
int i = r.nextInt(5); // chooses 0, 1, .. 4
int j = r.nextInt(5);
JButton b = buttons[i][j];
b.setText(b.getName());
(但你可能不想要Component.getName()
..)
答案 1 :(得分:1)
您需要选择一个随机数组,然后选择一个随机索引,以确保您不会超出单个数组中任意数组的范围。
//create buttons first
Random random = new Random();
JButton[] buttons randomButtonsArray = buttons[random.nextInt(buttons.length)];
JButton randomButton = randomButtonsArray[random.nextInt(randomButtonArray.length)];