摆动流程布局中断元素

时间:2011-06-04 17:30:28

标签: java swing

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

如何在流程布局中取得突破?就像html中的<br/>一样。一些特殊的break元素或另一个技巧来指示指定的元素以及随后的所有元素必须转到下一行。

5 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:10)

Wrap Layout可能是您的解决方案。当一行已满时,它会自动将组件移动到下一行。

答案 2 :(得分:8)

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

在这种情况下,我会使用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你现在将下一个面板设置为活动(可能动态创建它)。

答案 3 :(得分:1)

我认为在流式布局中无法做到这一点,您可能需要尝试其他布局,例如GridLayoutGridBagLayout

答案 4 :(得分:0)

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