Java JFace仅调整TitleReadialog中最后一个组的大小
下面附带的程序创建了一个TitlearReadialog,其中包含四个组。每个组都包含控件,最后一个组是“动态”组,即在组合框中选择条目时,会生成一定数量的控件 现在,幸运的是,对话框会自动调整大小——但我想对调整大小有更多的控制。正如现在一样,对话框大小在组之间“均匀分布”。我想做的是只放大(或缩小)最后一组,即使用户用鼠标调整对话框的大小。三个静态组的大小(高度)应保持不变 有没有办法做到这一点? 蒂亚Java JFace仅调整TitleReadialog中最后一个组的大小,java,resize,swt,jface,titleareadialog,Java,Resize,Swt,Jface,Titleareadialog,下面附带的程序创建了一个TitlearReadialog,其中包含四个组。每个组都包含控件,最后一个组是“动态”组,即在组合框中选择条目时,会生成一定数量的控件 现在,幸运的是,对话框会自动调整大小——但我想对调整大小有更多的控制。正如现在一样,对话框大小在组之间“均匀分布”。我想做的是只放大(或缩小)最后一组,即使用户用鼠标调整对话框的大小。三个静态组的大小(高度)应保持不变 有没有办法做到这一点? 蒂亚 公共类对话框示例扩展应用程序窗口{ 类MyDialog扩展了TitlearReadial
公共类对话框示例扩展应用程序窗口{
类MyDialog扩展了TitlearReadialog{
MyDialog(Shell){
超级(壳牌);
setShellStyle(getShellStyle()| SWT.MAX | SWT.RESIZE);
}
专用复合createComposite(复合父级){
复合材料c=新复合材料(母体,SWT.NONE);
GridLayout=新的GridLayout(1,false);
布局。水平间距=10;
c、 设置布局(布局);
c、 setLayoutData(新网格数据(SWT.FILL,SWT.FILL,true,true));
返回c;
}
私有组createGroup(复合父级,字符串标题){
新组=新组(父组,SWT.NONE);
newGroup.setText(标题);
setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true));
GridLayout=新的GridLayout();
newGroup.setLayout(布局);
返回新组;
}
私有组createGroup(复合父级,int-controlCount){
组newGroup=createGroup(父级,“组”+控制计数);
对于(int i=0;i 对于(int i=0;i而言,其原因是您使用以下公式:
newGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
这意味着每个组都应该跨越父组并占据尽可能多的空间
您可以使用以下方法解决此问题:
newGroup.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
对于不应垂直拉伸的组件,以及:
newGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
对于那些应该这样做的人
如果您还没有阅读“理解SWT中的布局”,请阅读
newGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));