所以我一直在研究这个问题和调试几天,我无法找到问题所在。 我正在制作战舰游戏,我需要为玩家和对手创建2个10x10网格。 我使用NetBeans Designer工具来创建这个简单的布局。 2个标签,3个按钮和2个面板,它们将作为我的网格的包装。 (我将那些包装器面板的布局设置为GridLayout,包含10列和10行)
http://i.imgur.com/KlZ7EjF.jpg
然后我制作了一个简单的代码来填充带有网格的包装器。
public void initFields()
{
pan = new JPanel[10][10];
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
pan[i][j] = new JPanel();
pan[i][j].setBackground(Color.WHITE);
pan[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK));
pan[i][j].setPreferredSize(new Dimension(25,25));
wrapper1.add(pan[i][j]);
}
}
pan2 = new JPanel[10][10];
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
pan2[i][j] = new JPanel();
pan2[i][j].setBackground(Color.WHITE);
pan2[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK));
pan2[i][j].setPreferredSize(new Dimension(25,25));
wrapper2.add(pan[i][j]);
}
}
}
最后我得到了这个:
http://i.imgur.com/92y9K5y.jpg
我的JPannel pan填充在wrapper2中,wrapper1保持为空。 尝试调试,制作Gui Snapshot,一切看起来应该如此,但最终结果与其他一切相反。
答案 0 :(得分:4)
在第二个循环中,您再次添加pan[][]
而不是pan2[][]
:
wrapper2.add(pan2[i][j]);
^