GridBagLayout 不显示组件

GridBagLayout does not display a component

我写了一个显示圆形进度条的组件。当我把它放在 BorderLayout 中时,一切看起来都很好。

但是设置了一个GridBagLayout就看不到了

    p.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    p.add(north(), gbc);
    gbc.gridx = 0;
    gbc.gridy = 1;
    p.add(west(), gbc);
    gbc.gridx = 1;
    gbc.gridy = 1;
    p.add(bar, gbc);

不知道是GridBagConstraints设置的问题还是其他原因

But it can't be seen when a GridBagLayout is set.

可能是因为您没有重写组件的 getPreferredSize() 方法,所以首选大小为 (0, 0)。

GridBagLayout 将尝试以其首选大小显示组件。

我想您在添加组件时需要使用 fill 约束,以便它可以自动调整大小以填充单元格中可用的 space。阅读有关 How to Use GridBagLayout 的 Swing 教程部分,了解更多信息和示例。

When I put it in BorderLayout everything looks fine.

当添加到 BorderLayout 的中心时,组件将调整大小以填充 space 可用空间。