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

时间:2017-04-04 02:29:36

标签: java swing jframe 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);
}

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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