摆动流程布局中断元素

我有使用流程布局的面板。

如何在流程布局中打破? 喜欢用在html中。 一些特殊的break元素或另一个技巧来指示指定的元素和所有后续必须转到下一行。

在这样的情况下,我将两个容器与flowlayout一个放在BoxLayout中。 嵌套布局相当便宜。

环绕布局可能是您的解决方案。 当线路已满时,它会自动将组件移动到下一行。

您想手动分割多行组件吗? 所以你知道你想要哪个换行符。

在那种情况下,我将使用3个面板:

  • 1个面板包含其他2个面板,其中GridLayout为1列
  • GridLayout中有2个面板,每个面板都有一个FlowLayout

示例代码:

  frame = new JFrame(); frame.setBounds(100, 100, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); { panel = new JPanel(); frame.getContentPane().add(panel, BorderLayout.NORTH); panel.setLayout(new GridLayout(0, 1, 0, 0)); { panel_1 = new JPanel(); panel.add(panel_1); { lblPanelFlowlayout = new JLabel("Panel 2: FlowLayout"); panel_1.add(lblPanelFlowlayout); } } { panel_2 = new JPanel(); panel.add(panel_2); { lblPanel = new JLabel("Panel 3: FlowLayout"); panel_2.add(lblPanel); } } } 

您可以根据需要添加任意数量的带有FlowLayout的新面板。 每次你做一个BR你现在将下一个面板设置为活动(可能动态创建它)。

我认为在流布局中不可能,你可能想尝试另一种布局,比如GridLayout或GridBagLayout

我创建了多个没有插入的占位符面板,然后使用一些代码来计算组件何时需要移动到下一个面板,因为它低于最小宽度阈值。 这很难看,但应该有效。 您需要手动完成所有移除和添加,并在EDT内。