【发布时间】:2011-06-05 02:58:27
【问题描述】:
我有一个使用流式布局的面板。
如何打破流布局?就像 html 中的 <br/>。一些特殊的中断元素或其他技巧来指示指定的元素和所有后续元素都必须转到下一行。
【问题讨论】:
我有一个使用流式布局的面板。
如何打破流布局?就像 html 中的 <br/>。一些特殊的中断元素或其他技巧来指示指定的元素和所有后续元素都必须转到下一行。
【问题讨论】:
在这种情况下,我会将两个带有 flowlayout 的容器放在一个 BoxLayout 中。嵌套布局相当便宜。
【讨论】:
Wrap Layout 可能是您的解决方案。当一行满时,它会自动将组件移动到下一行。
【讨论】:
您想手动将组件分成多行吗?所以你知道你想要换行符在哪里。
在这种情况下,我会使用 3 个面板:
示例代码:
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 内手动完成所有删除和添加操作。
【讨论】: