为啥我的组件没有包裹在 Swing 的 FlowLayout 中?

Posted

技术标签:

【中文标题】为啥我的组件没有包裹在 Swing 的 FlowLayout 中?【英文标题】:Why aren't my components wrapping in Swing's FlowLayout?为什么我的组件没有包裹在 Swing 的 FlowLayout 中? 【发布时间】:2012-08-10 20:49:51 【问题描述】:

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

【问题讨论】:

我的猜测是它与panel的父容器有关。 【参考方案1】:

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

但是,你可以看看WrapLayout,这是解决这个问题的方法

【讨论】:

here is rest +1 很难受。我已经开始使用 MigLayout,它很棒。【参考方案2】:

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

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

【讨论】:

以上是关于为啥我的组件没有包裹在 Swing 的 FlowLayout 中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥没有javax.swing.JTree.DefaultMutableTreeNode

为啥我的组件一遍又一遍地重新绘制而没有发生任何变化?

java里的swing是啥意思,为啥取名swing

为啥我的包裹被归类为危险包裹

RN下ScrollView包裹FlatList/SectionList类的组件,在IOS键盘遮挡问题

java中,swing设计中,为啥JOptionPane.showmessageDialog()弹出对话框后,单击确定按钮能关闭窗口?