java gridlayout 设置列宽,设置GridLayout列的宽度

I have a GridLayout inside a Composite and I have two column inside that. I want to have column width 75 % and 25 % of the Shell width . How to do that?

解决方案

Right, here you go: Use the GridData#widthHint values to force a certain width of the Composites. Compute the width based on the width of the Shell:

public static void main(String[] args)

{

Display display = Display.getDefault();

final Shell shell = new Shell(display);

shell.setLayout(new GridLayout(2, false));

Composite left = new Composite(shell, SWT.BORDER);

Composite right = new Composite(shell, SWT.BORDER);

final GridData leftData = new GridData(SWT.FILL, SWT.FILL, true, true);

final GridData rightData = new GridData(SWT.FILL, SWT.FILL, true, true);

left.setLayoutData(leftData);

right.setLayoutData(rightData);

shell.addListener(SWT.Resize, new Listener()

{

@Override

public void handleEvent(Event arg0)

{

Point size = shell.getSize();

leftData.widthHint = (int) (size.x * 0.75);

rightData.widthHint = size.x - leftData.widthHint;

System.out.println(leftData.widthHint + " + " + rightData.widthHint + " = " + size.x);

}

});

shell.pack();

shell.open();

shell.layout();

while (!shell.isDisposed())

{

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

}

After start:

LrnAZ.png

After resizing:

kJJq7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三十一、Java 图形化界面设计——布局管理器之 GridLayout(网格布局) 网格布局特点: l 使容器中的各组件呈 M 行×N 的网格状分布。 l 网格每列宽度相同,等于容器的宽度除以网格的数。 l 网格每行高度相同,等于容器的高度除以网格的行数。 l 各组件的排方式为:从上到下,从左到右。 l 组件放入容器的次序决定了它在容器中的位置。 l 容器大小改变时,组件的相对位置不变,大小会改变。 l 设置网格布局行数和数时,行数或者数可以有一个为零。若 rows 为 0,cols 为 3,则数固定为 3,行数不限,每行只能放 3 个控 件或容器。若 cols 为 0,rows 为 3,则行数固定为 3,数不限,且每 行必定有控件,若组件个数不能整除行数,则除去最后一行外的所有 行组件个数为:Math.ceil(组件个数/rows)。 Math.ceil(double x):传回不小于 x 的最小整数值。比如行数为 3,组件 数为 13 个,则 Math.ceil(13/3)=5,即第一行,第二行组件数各为 5 个, 剩下的组件放在最后一行。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 5、电气设备调试高中资料试卷技术 电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。 l 若组件数超过网格设定的个数,则布局管理器会自动增加网格个数, 原则是保持行数不变。 构造方法摘要 GridLayout(): 创建具有默认值的网格布局,即每个组件占 据一行一GridLayout(int rows, int cols) : 创建具有指定行数和数的网格布局。Rows 为行数,cols 为数。 GridLayout(int rows, int cols, int hgap, int vgap) : 创建具有指定行数、数以及组件水平、纵向一定间距的 网格布局。 方法摘要 int getColumns() :获取此布局中的数。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安
### 回答1: Java GridLayout可以通过设置行数和数来控制大小。例如,如果您想要一个3行2的网格布局,可以使用以下代码: ``` GridLayout gridLayout = new GridLayout(3, 2); ``` 这将创建一个3行2的网格布局。您可以将此布局添加到您的容器中,并将组件添加到每个单元格中。每个单元格的大小将自动调整以适应网格布局的大小。 ### 回答2: java中的GridLayout是一种常见的布局方式,用于将组件放置在网格中。设置网格大小是GridLayout中常见的操作之一。 GridLayou可以通过setRows(int rows)和setColumns(int cols)方法来设置行数和数。这将决定网格的大小,即组件可以放置的最大数量。例如,如果设置了3行和4,那么GridLayout将创建一个3x4的网格。 GridLayout还可以通过setHgap(int hgap)和setVgap(int vgap)方法来设置水平和垂直间距。这将决定网格中相邻组件之间的距离。例如,如果设置了5像素的hgap和vgap,则相邻组件之间将保留5像素的空隙。 另外,可以使用setPreferredSize(Dimension preferredSize)方法来设置整个GridLayout的首选大小。这将影响在容器中放置GridLayout时,容器的大小。 如果需要更细粒度的控制,可以通过为每个组件设置PreferredSize(Dimension preferredSize)方法来单独设置组件的大小。这将覆盖任何设置的网格大小。 在实践中,通常需要根据实际需要进行调整。设置网格大小不仅仅是为了让组件协调地排在一起,还需要考虑整体的布局和用户体验。因此,在使用GridLayout时需要根据实际情况灵活调整设置。 ### 回答3: 在Java中,GridLayout是一个非常常用的布局管理器,可以让我们在一个容器中按照网格的方式排组件。在使用GridLayout布局管理器时,我们可以通过设置各个组件的大小来控制布局的整体效果。 设置组件大小的方法主要有两种,一种是通过设置组件的preferredSize属性来控制组件的大小;另一种是通过设置组件的最小尺寸和最大尺寸来控制组件的大小范围。 如果我们要设置组件的preferredSize属性,可以使用setPreferredSize方法来实现。例如,我们可以使用如下代码设置一个JLabel组件的preferredSize为100x50: JLabel label = new JLabel("Hello World"); label.setPreferredSize(new Dimension(100, 50)); 这样,在使用GridLayout布局管理器时,label组件就会被认为是一个100x50的组件,从而在布局中占据相应的位置。 如果我们要使用最小尺寸和最大尺寸来控制组件的大小范围,可以使用setMinimumSize和setMaximumSize方法来实现。例如,我们可以使用如下代码设置一个JLabel组件的最小尺寸为50x30,最大尺寸为150x90: JLabel label = new JLabel("Hello World"); label.setMinimumSize(new Dimension(50, 30)); label.setMaximumSize(new Dimension(150, 90)); 这样,在使用GridLayout布局管理器时,label组件就会被认为是一个尺寸范围在50x30到150x90之间的组件,从而在布局中按照相应的方案进行排。 在使用GridLayout布局管理器时,我们还可以通过设置容器的preferredSize来控制整个布局的大小。例如,我们可以使用如下代码设置一个JPanel容器的preferredSize为600x400: JPanel panel = new JPanel(new GridLayout(3, 3)); panel.setPreferredSize(new Dimension(600, 400)); 这样,在使用GridLayout布局管理器时,panel容器就会被认为是一个600x400的容器,从而在布局中按照相应的方案进行排。需要注意的是,设置容器的preferredSize并不能直接控制组件的大小,而只是决定了整个布局的大小,组件的大小还需通过上述方法进行设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值