0

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

但是设置 a 时就看不到了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还是其他原因。

4

1 回答 1

2

但是设置了 GridBagLayout 时就看不到了。

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

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

我猜您fill在添加组件时需要使用约束,以便可以自动调整其大小以填充单元格中的可用空间。阅读 Swing 教程中有关如何使用 GridBagLayout的部分以获取更多信息和示例。

当我把它放在 BorderLayout 中时,一切看起来都很好。

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

于 2020-05-03T14:50:30.827 回答