GridBagLayout不显示组件。

问题描述 投票:0回答:1

我写了一个组件来显示一个圆形的进度条。当我把它放在 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 或其他原因。

java swing layout-manager gridbaglayout
1个回答
2
投票

但当GridBagLayout被设置时,它就看不到了。

可能是由于你没有覆盖了 getPreferredSize() 方法,所以首选尺寸将是(0, 0)。

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

我猜你需要使用 fill 约束,这样就可以自动调整组件的大小以填充单元格中的可用空间。请阅读Swing教程中关于 如何使用GridBagLayout 以获取更多信息和示例。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.