试图在面板上添加标签

时间:2017-05-20 13:40:19

标签: java swing

我正在尝试在我创建的每个面板中添加标签,但我只在最后创建的面板中获得标签。它用于蛇和梯子游戏,我正在尝试为游戏启动游戏。我需要每个小组都有一个号码。

    public InitBoard() {
        JPanel jPanel1 = new JPanel(new GridLayout(10, 10, 0, 0));
        JPanel[][] pa = new JPanel[10][10];
        //jPanel1.setSize(1024,1080);

        int counter=1;
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {

                JPanel tiles = new JPanel();
                tiles.setBorder(BorderFactory.createLineBorder(Color.BLACK));
                number++;
                label1.setText(String.valueOf(number));
                tiles.add(label1);

                if(counter == 1) {
                    tiles.setBackground(Color.green);
                }
                if (counter == 2) {
                    tiles.setBackground(Color.red);
                }
                if(counter == 3 ){
                    tiles.setBackground(Color.cyan);
                }

                counter++;
                pa[i][j] = tiles;
                jPanel1.add(pa[i][j]);
                if(counter ==5){
                    counter =1;
                }
            }
        }

        add(jPanel1, BorderLayout.CENTER);
        setSize(960, 960);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
}

运行文件时显示以下图像。 任何帮助都提前感谢。

1 个答案:

答案 0 :(得分:1)

我无法从您发布的代码中看到这一点,但似乎您正在为所有磁贴重用相同的JLabel实例(label1)。这会以某种方式导致标签被覆盖并重新用于除最后一个之外的所有瓷砖。

只需使用此行:

tiles.add(new JLabel(String.valueOf(number)));

而不是您目前所拥有的:

label1.setText(String.valueOf(number));
tiles.add(label1);

进行此更改后,我让您的代码按预期工作,在每个磁贴上显示一个数字。如果需要将数字存储在某个地方,或者如果您以后需要更改它们,则可能需要创建一个类似于JPanels(pa)的数组。