繁体   English   中英

如何为 FlowLayout 的一部分设置水平间隙?

[英]How do I set the horizontal gap for just one part of a FlowLayout?

我有一个带有三个按钮的流布局,在第一个和第二个按钮之间我想要一个 30 的水平间隙,在第二个和第三个按钮之间我想要一个 10 的水平间隙。我试过这个:

Jpanel panel = new JPanel(new FlowLayout());
JButton button1 = new Button("1");
JButton button2 = new Button("2");
JButton button3 = new Button("3");

panel.add(button1);
((FlowLayout)panel.getLayout()).setHgap(30);
panel.add(button2);
((FlowLayout)panel.getLayout()).setHgap(10);
panel.add(button3);

但这会将所有水平间隙更改为 10。

任何想法将不胜感激,谢谢。

尝试使用 Box.createHorizontalStrut

panel.add(button1);
panel.add(Box.createHorizontalStrut(30));
panel.add(button2);
Box.createHorizontalStrut(10);
panel.add(button3);

EmptyBorder添加到第二个按钮,在第二个参数中添加额外的像素( left ):

button2.setBorder(new EmptyBorder(0, 20, 0, 0));

你可以试试 MigLayout:

Jpanel panel = new JPanel(new MigLayout());

panel.add(new Button("1"), "gap right 30");
panel.add(new Button("2"), "gap right 10");
panel.add(new Button("3"));

另一种解决方案是使用createRigidArea(...)来创建一个始终为指定大小的不可见组件。 然后可以将此类组件用作垫片:

panel.add(button1);
panel.add(Box.createRigidArea(new Dimension(30, 0)));
panel.add(button2);
panel.add(Box.createRigidArea(new Dimension(10, 0)));
panel.add(button3);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM