gpt4 book ai didi

java - 将 JLabel 的二维数组打印到 GridLayout

转载 作者:行者123 更新时间:2023-11-29 07:35:43 24 4
gpt4 key购买 nike

我有一个迷宫创建程序,想把它放到图形用户界面中。我的迷宫位于一个二维数组中,因此我计划在 JPanel 中创建一个二维 JLabel 数组,并根据每个标签是路径还是墙为其分配颜色。我可以创建 JLabel 的 2D 数组并将其添加到我的面板中,但是当我运行它时,所有 JLabel 都向右移动一个空格,所以我的左上角有一个空格,并且比那里多了一列,少了一行应该是。

图形用户界面的图片:

http://i.stack.imgur.com/MmDvf.png

这是我的代码;我不确定是什么问题。我试过改变 GridLayout 的大小,改变我的循环运行次数,改变 row 和 col 的值(现在都是 10),并尝试在那个地方手动创建一个额外的 JLabel,但没有骰子。

public Maze() {
JPanel panel = new JPanel();
getContentPane().add(panel);

int row = MazeCreator.r;
int col = MazeCreator.c;

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 500);
getContentPane().setLayout(new GridLayout(row, col));

JLabel[][] grid= new JLabel[row][col];
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
grid[i][j] = new JLabel();
grid[i][j].setBorder(new LineBorder(Color.BLACK));
//grid[i][j].setBackground(Color.black);
grid[i][j].setOpaque(true);
super.add(grid[i][j]);
}
}
grid[0][0].setBackground(Color.red);
}

我可以通过从 col 中减去 1 并将 1 添加到 row 来“修复”行太少和 cols 太多的问题,但这只会创建 99 个 JLabel 而不是 100 个,就像我说的那样,手动放入左上角JLabel 不起作用。

最佳答案

不要使用 super.add() 将标签添加到面板。并将面板的布局设置为 GridLayout 而不是 JFrame

public Maze() {
JPanel panel = new JPanel();
getContentPane().add(panel);

int row = MazeCreator.r;
int col = MazeCreator.c;

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 500);
panel.setLayout(new GridLayout(row, col));

JLabel[][] grid= new JLabel[row][col];
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
grid[i][j] = new JLabel();
grid[i][j].setBorder(new LineBorder(Color.BLACK));
//grid[i][j].setBackground(Color.black);
grid[i][j].setOpaque(true);
panel.add(grid[i][j]);
}
}
grid[0][0].setBackground(Color.red);
}

关于java - 将 JLabel 的二维数组打印到 GridLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com