我目前正在编写游戏板(使用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
来使用矩形。但是,我想先弄清楚我的计划。
答案 0 :(得分:0)
不需要逐个创建它们,只需保留对数组中每个按钮的引用,以便以后可以访问它:
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);
}
下次请添加完整代码示例!