在GridLayout中创建一个10x10的JPanel网格时,Java Swing奇怪的Gui输出

时间:2013-12-07 02:25:39

标签: java swing variables netbeans jpanel

所以我一直在研究这个问题和调试几天,我无法找到问题所在。 我正在制作战舰游戏,我需要为玩家和对手创建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,一切看起来应该如此,但最终结果与其他一切相反。

1 个答案:

答案 0 :(得分:4)

在第二个循环中,您再次添加pan[][]而不是pan2[][]

wrapper2.add(pan2[i][j]);
                ^