复制网格jpanel中的元素

时间:2014-01-02 17:35:15

标签: java swing jpanel

我试图制作一个网格布局,随机地将字母分配给网格中的不同坐标。然而,香港专业教育学院设法使它大部分工作,但它似乎只允许一个相同的字母,并没有复制它..我需要在网格周围有更多相同的字母(如果这是有道理的)。香港专业教育学院试图搞清楚,并认为这可能是一个小错误..任何人都可以指出我正确的方向?任何帮助将不胜感激..

gridPanel = new JPanel(new GridLayout(X, Y));
        grid = new JPanel[X][Y];    
        bug = new JLabel("O");
        obstacle = new JLabel("X");
        food = new JLabel("F");
        empty = new JLabel(" ");

        Random r = new Random();
        for (int i = 0; i < X; i++) {
            for (int j = 0; j < Y; j++) {
                grid[i][j] = new JPanel();
                grid[i][j].setBackground(Color.white);
                grid[i][j].setBorder(BorderFactory
                        .createLineBorder(Color.black));
                gridPanel.add(grid[i][j]);
                int num = r.nextInt(10); 
                if (num == 2) { 
                    grid[i][j].add(food); 
                } else if (num == 9) { 
                    grid[i][j].add(obstacle);
                } else if (num == 5) {
                    grid[i][j].add(bug);                                            
                } else {
                    grid[i][j].add(empty); 
                }
                }
        }

1 个答案:

答案 0 :(得分:2)

您正在尝试多次向GUI添加JLabel,但这是无法完成的。

您可以将GUI组件添加到一个且仅一个容器中。考虑使用JLabel填充网格,并在需要时简单地设置文本。即,不交换组件,但交换组件的状态。

或者使用方法在需要时创建JLabel。