Java - JLabel 组件仅在调整大小时显示



当我运行代码时,JFrame 窗口显示标题框架的最小版本,需要调整其大小才能实际显示任何内容。通常这是由于最后缺少 pack(( 或 setVisible(true(,但在这种情况下并非如此。这是代码:

public static void main(String[] args) throws FileNotFoundException {
    Boolean[][] maze = Exercise4.readMaze();
    int row = maze.length;
    JFrame f = new JFrame("Maze");
    f.setLayout(new GridLayout(row, row));
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < row; j++) {
            JLabel grid = new JLabel();
            grid.setOpaque(true);
            if (maze[i][j].equals(false))
                grid.setBackground(Color.black);
            else grid.setBackground(Color.white);
            f.add(grid);
        }
    }
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setVisible(true);
}

JLabel grid = new JLabel();正在创建一个空白标签,它的默认大小将0x0,因此当您pack框架时,它已被打包为首选大小,基本上0x0

考虑使用类似 JLabel grid = new JLabel(" "); 的东西开始,但我可能会考虑使用指定大小的"空白"图标

您也可以使用一些文本并将foreground(文本(颜色设置为与背景相同的颜色,但我个人会使用透明图标,但这就是我

尝试创建一个JPanel并将所有组件放在其中,然后将JPanel添加到JFrame

最新更新