java jpanel对齐_Java使用grouplayout对齐3个面板

本文档描述了一个Java Swing应用程序中关于布局管理器的问题。开发者尝试使一个大面板和两个小面板在窗口中正确对齐,但遇到了布局不理想的情况。问题在于大面板占据了所有空间,而两个小面板没有按预期排列。解决方案涉及到在GroupLayout中为每个组件指定合适的尺寸约束,以实现动态调整大小的同时保持布局对齐。
摘要由CSDN通过智能技术生成

我不能让我的3个面板正确对齐.

我基本上有1个大面板和2个较小(不一定相同)的面板.

大的一个在左边,两个小的在右边,一个在另一个之上.组件应保持动态可调整大小.

我想要的是这个(9是大的,1是小的一个,2是另一个小的):

999999 111

999999 111

999999 111

999999 222

999999 222

我得到的是这个:

999999 111

999999 111

999999 111

999999

999999

222

222

我的代码如下,graphimscrollpane大一个,workpanel和informationpanel小代码:

private void createLayout(GroupLayout groupLayout) {

groupLayout.setHorizontalGroup(

groupLayout.createSequentialGroup()

.addContainerGap()

.addComponent(graphSimScrollPane, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addContainerGap(20, Short.MAX_VALUE)

.addGroup(groupLayout.createParallelGroup(Alignment.CENTER)

.addComponent(workPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(informationPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

groupLayout.setVerticalGroup(

groupLayout.createSequentialGroup()

.addGroup(groupLayout.createParallelGroup(Alignment.CENTER)

.addComponent(graphSimScrollPane, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(workPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addComponent(informationPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

guiFrame.getContentPane().setLayout(groupLayout);

}

解决方法:

GroupLayout的基本结构与此代码类似:

JPanel pnl = new JPanel();

GroupLayout l = new GroupLayout(pnl);

pnl.setLayout(l);

JButton b1 = new JButton("1");

JButton b2 = new JButton("2");

JButton b3 = new JButton("3");

l.setHorizontalGroup(

l.createSequentialGroup()

.addComponent(b1)

.addGroup(l.createParallelGroup()

.addComponent(b2)

.addComponent(b3)));

l.setVerticalGroup(

l.createParallelGroup()

.addComponent(b1)

.addGroup(l.createSequentialGroup()

.addComponent(b2)

.addComponent(b3)));

JFrame f = new JFrame("test");

f.setContentPane(pnl);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(1024, 768);

f.setVisible(true);

简单来说,横轴上的约束是“b1,然后是b2和b3并行”.纵轴上的约束读取“b1与由b1然后b2组成的组并行”.

显然,这里的可恢复性属性很明显.您需要提供有关组件在其大小方面的行为方式的更多详细信息.

一种可能性是将两个小部件分配给整个垂直空间,但仅给予它们优选的水平空间.当然,给大部分剩下的空间.

l.setHorizontalGroup(

l.createSequentialGroup()

.addComponent(b1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(l.createParallelGroup()

.addComponent(b2, 0, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)

.addComponent(b3, 0, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)));

l.setVerticalGroup(

l.createParallelGroup()

.addComponent(b1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(l.createSequentialGroup()

.addComponent(b2, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(b3, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

请注意,结构与第一个代码相同,只添加了大小参数.

标签:java,swing,layout-manager,grouplayout

来源: https://codeday.me/bug/20190613/1230133.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值