我试图制作一个网格布局,随机地将字母分配给网格中的不同坐标。然而,香港专业教育学院设法使它大部分工作,但它似乎只允许一个相同的字母,并没有复制它..我需要在网格周围有更多相同的字母(如果这是有道理的)。香港专业教育学院试图搞清楚,并认为这可能是一个小错误..任何人都可以指出我正确的方向?任何帮助将不胜感激..
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);
}
}
}
答案 0 :(得分:2)
您正在尝试多次向GUI添加JLabel,但这是无法完成的。
您可以将GUI组件添加到一个且仅一个容器中。考虑使用JLabel填充网格,并在需要时简单地设置文本。即,不交换组件,但交换组件的状态。
或者使用方法在需要时创建JLabel。