Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 摆动流布局中断元素_Java_Swing - Fatal编程技术网

Java 摆动流布局中断元素

Java 摆动流布局中断元素,java,swing,Java,Swing,我有一个使用流布局的面板 如何在流程布局中实现中断?就像html中的。一些特殊的中断元素或其他技巧来指示指定的元素和所有后续元素必须转到下一行。我认为在流布局中不可能做到这一点,您可能希望尝试另一种布局,如或在这种情况下,我会在BoxLayout中放置两个具有flowlayout的容器,一个在另一个容器的顶部。嵌套布局相当便宜。我会制作多个没有插入的占位符面板,然后使用一些代码计算组件何时需要移动到下一个面板,因为它低于最小宽度阈值。这很难看,但应该有用。您需要在EDT内手动完成所有移除和添加操

我有一个使用流布局的面板


如何在流程布局中实现中断?就像html中的

。一些特殊的中断元素或其他技巧来指示指定的元素和所有后续元素必须转到下一行。

我认为在流布局中不可能做到这一点,您可能希望尝试另一种布局,如或

在这种情况下,我会在BoxLayout中放置两个具有flowlayout的容器,一个在另一个容器的顶部。嵌套布局相当便宜。

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

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

是否手动将组件分成多行?所以你知道你想要换行符在哪里

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

  • 1个面板,包含其他2个具有1列GridLayout的面板
  • 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时,您现在都会将下一个面板设置为活动面板(可能是动态创建的)。

Heh,嵌套很好,但还不够,当容器高度较大时,它会产生不必要的间隙。如果您正确编码,就没有理由存在间隙。如果您在嵌套,请发布一个示例。