2

为什么我的组件没有使用 FlowLayout 包装在这个 JPanel 中?他们只是跑出屏幕,只是部分可见。

JPanel panel = new JPanel(new FlowLayout());
panel.add(new JLabel("TEST"));
// ... repeat adding JLabels until they go off screen when they SHOULD wrap
// to the next line...

这就是我的全部代码(除了添加和打包框架)。我误解了FlowLayout吗?我是否必须在标签或面板上设置某种尺寸?

4

2 回答 2

7

那是因为FlowLayout没有。我知道,这很糟糕。

但是,你可以看看WrapLayout这是一个解决这个问题

于 2012-08-10T21:23:04.417 回答
1

我知道这是一个老问题,但我在尝试解决同样的问题时偶然发现了它。FlowLayout 不会包装其子组件并不完全正确。

问题是具有所需 FlowLayout 的 JPanel 必须位于另一个容器内,该容器将调整大小并允许FlowLayout 也调整大小并因此换行。根据我的经验, BorderLayout 的 CENTER 区域是唯一允许这种情况发生的容器。

于 2018-10-29T01:40:16.763 回答