为什么我的组件不包装在Swing的FlowLayout中?

时间:2012-08-10 20:49:51

标签: java swing flowlayout

为什么我的组件不使用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吗?我是否必须在标签或面板上设置某种尺寸?

2 个答案:

答案 0 :(得分:6)

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

但是,您可以查看WrapLayout这是解决此问题的方法

答案 1 :(得分:0)

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

问题在于,具有所需FlowLayout的JPanel必须位于另一个容器中,该容器将重新调整大小,并且 允许FlowLayout也重新调整大小并因此进行包装。以我的经验,BorderLayout的CENTER区域是唯一允许这种情况发生的容器。