访问使用循环创建的按钮 - Swing
Accesing buttons created with a loop - Swing
我目前正在编写游戏板(使用 Java Swing)。我写了以下内容来显示板(行从 A-I,列从 1-12):
JPanel panel = new JPanel(new GridLayout(9,12,5,5));
panel.setBounds(10, 11, 800, 600);
frame.getContentPane().add(panel);
//board
for(int r = 0; r<9; r++)
{
for(int c = 0; c<12; c++)
{
panel.add(new JButton((c+1) + numberList[r])).setBackground(Color.WHITE);
}
}
用户应该可以购买板上的某些插槽。例如,如果用户 A 购买 A1,那么面板上的那个按钮应该变为红色,如果用户 B 购买 A2,那么该按钮应该变为绿色(用户将拥有某些具有可用图块坐标的按钮,并且在单击按钮,板上的瓷砖应该改变颜色并保持不变)。由于我在循环中创建了所有按钮并且我没有为每个按钮命名,我还能完成这个吗?我不想一个一个地创建 108 个按钮。
我知道我不应该在面板上使用按钮,我很快就会改变它。我将使用 Graphics G
来使用矩形。不过,我想先想清楚我的计划。
不需要一个一个地创建它们,只需在数组中保留对每个按钮的引用,以便稍后访问它:
public static void main(String[] args)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridLayout(9, 12, 5, 5));
panel.setBounds(10, 11, 800, 600);
frame.getContentPane().add(panel);
JButton[][] buttons = new JButton[9][12];
char [] numberList = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
// board
for (int r = 0; r < 9; r++)
{
for (int c = 0; c < 12; c++)
{
buttons[r][c] = new JButton("" + (c + 1) + numberList[r]);
buttons[r][c].setBackground(Color.WHITE);
panel.add(buttons[r][c]);
}
}
frame.setContentPane(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
下次请附上完整代码示例!
我目前正在编写游戏板(使用 Java Swing)。我写了以下内容来显示板(行从 A-I,列从 1-12):
JPanel panel = new JPanel(new GridLayout(9,12,5,5));
panel.setBounds(10, 11, 800, 600);
frame.getContentPane().add(panel);
//board
for(int r = 0; r<9; r++)
{
for(int c = 0; c<12; c++)
{
panel.add(new JButton((c+1) + numberList[r])).setBackground(Color.WHITE);
}
}
用户应该可以购买板上的某些插槽。例如,如果用户 A 购买 A1,那么面板上的那个按钮应该变为红色,如果用户 B 购买 A2,那么该按钮应该变为绿色(用户将拥有某些具有可用图块坐标的按钮,并且在单击按钮,板上的瓷砖应该改变颜色并保持不变)。由于我在循环中创建了所有按钮并且我没有为每个按钮命名,我还能完成这个吗?我不想一个一个地创建 108 个按钮。
我知道我不应该在面板上使用按钮,我很快就会改变它。我将使用 Graphics G
来使用矩形。不过,我想先想清楚我的计划。
不需要一个一个地创建它们,只需在数组中保留对每个按钮的引用,以便稍后访问它:
public static void main(String[] args)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridLayout(9, 12, 5, 5));
panel.setBounds(10, 11, 800, 600);
frame.getContentPane().add(panel);
JButton[][] buttons = new JButton[9][12];
char [] numberList = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
// board
for (int r = 0; r < 9; r++)
{
for (int c = 0; c < 12; c++)
{
buttons[r][c] = new JButton("" + (c + 1) + numberList[r]);
buttons[r][c].setBackground(Color.WHITE);
panel.add(buttons[r][c]);
}
}
frame.setContentPane(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
下次请附上完整代码示例!