Java SWT网格布局宽度
我正在尝试使用SWT创建一个简单的显示。到目前为止,我成功地显示了数据库中的信息,并使用RowLayout显示它,每一行都包含一个GridLayout。看起来是这样的: 我真正想要的是让这些行延伸到整个窗口的宽度。我如何做到这一点Java SWT网格布局宽度,java,swt,Java,Swt,我正在尝试使用SWT创建一个简单的显示。到目前为止,我成功地显示了数据库中的信息,并使用RowLayout显示它,每一行都包含一个GridLayout。看起来是这样的: 我真正想要的是让这些行延伸到整个窗口的宽度。我如何做到这一点 谢谢你的帮助 实现这一点的通常方法是使用。该GridData告诉组件如何在其父级中运行,例如如何在父级中传播 通过使用: component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, fals
谢谢你的帮助 实现这一点的通常方法是使用。该
GridData
告诉组件如何在其父级中运行,例如如何在父级中传播
通过使用:
component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
您可以告诉组件在水平方向上占用尽可能多的空间,但在垂直方向上只占用必要的空间
下面是一个小示例,它应该按照您期望的方式运行:
public class StackOverflow
{
public static void main(String[] args)
{
Display display = Display.getDefault();
Shell shell = new Shell(display);
/* GridLayout for the Shell to make things easier */
shell.setLayout(new GridLayout(1, false));
for(int i = 0; i < 5; i++)
{
createRow(shell, i);
}
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private static void createRow(Shell shell, int i)
{
/* GridLayout for the rows, two columns, equal column width */
Composite row = new Composite(shell, SWT.NONE);
row.setLayout(new GridLayout(2, true));
/* Make each row expand horizontally but not vertically */
row.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
/* Create the content of the row, expand horizontally as well */
Button first = new Button(row, SWT.PUSH);
first.setText("FIRST " + i);
first.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
Button second = new Button(row, SWT.PUSH);
second.setText("SECOND " + i);
second.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
}
}
公共类堆栈溢出
{
公共静态void main(字符串[]args)
{
Display=Display.getDefault();
外壳=新外壳(显示);
/*Shell的GridLayout使事情变得更简单*/
shell.setLayout(新的GridLayout(1,false));
对于(int i=0;i<5;i++)
{
createRow(shell,i);
}
shell.pack();
shell.open();
而(!shell.isDisposed())
{
如果(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
私有静态void createRow(Shell,int i)
{
/*行、两列、相等列宽的网格布局*/
复合材料行=新复合材料(外壳,SWT.NONE);
row.setLayout(新的GridLayout(2,true));
/*使每行水平展开,而不是垂直展开*/
setLayoutData(新的GridData(SWT.FILL、SWT.beging、true、false));
/*创建行的内容,并水平展开*/
按钮优先=新按钮(行,SWT.PUSH);
first.setText(“first”+i);
首先,setLayoutData(新的GridData(SWT.FILL,SWT.beging,true,false));
按钮秒=新按钮(行,SWT.PUSH);
second.setText(“second”+i);
setLayoutData(新的GridData(SWT.FILL,SWT.start,true,false));
}
}
这是启动后的样子:
调整大小后:
附带说明:如果您还没有阅读过Eclipse中关于布局的教程,我建议您阅读该教程。每个SWT开发人员都应该读过它。实现这一点的通常方法是使用。该
GridData
告诉组件如何在其父级中运行,例如如何在父级中传播
通过使用:
component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
您可以告诉组件在水平方向上占用尽可能多的空间,但在垂直方向上只占用必要的空间
下面是一个小示例,它应该按照您期望的方式运行:
public class StackOverflow
{
public static void main(String[] args)
{
Display display = Display.getDefault();
Shell shell = new Shell(display);
/* GridLayout for the Shell to make things easier */
shell.setLayout(new GridLayout(1, false));
for(int i = 0; i < 5; i++)
{
createRow(shell, i);
}
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private static void createRow(Shell shell, int i)
{
/* GridLayout for the rows, two columns, equal column width */
Composite row = new Composite(shell, SWT.NONE);
row.setLayout(new GridLayout(2, true));
/* Make each row expand horizontally but not vertically */
row.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
/* Create the content of the row, expand horizontally as well */
Button first = new Button(row, SWT.PUSH);
first.setText("FIRST " + i);
first.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
Button second = new Button(row, SWT.PUSH);
second.setText("SECOND " + i);
second.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
}
}
公共类堆栈溢出
{
公共静态void main(字符串[]args)
{
Display=Display.getDefault();
外壳=新外壳(显示);
/*Shell的GridLayout使事情变得更简单*/
shell.setLayout(新的GridLayout(1,false));
对于(int i=0;i<5;i++)
{
createRow(shell,i);
}
shell.pack();
shell.open();
而(!shell.isDisposed())
{
如果(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
私有静态void createRow(Shell,int i)
{
/*行、两列、相等列宽的网格布局*/
复合材料行=新复合材料(外壳,SWT.NONE);
row.setLayout(新的GridLayout(2,true));
/*使每行水平展开,而不是垂直展开*/
setLayoutData(新的GridData(SWT.FILL、SWT.beging、true、false));
/*创建行的内容,并水平展开*/
按钮优先=新按钮(行,SWT.PUSH);
first.setText(“first”+i);
首先,setLayoutData(新的GridData(SWT.FILL,SWT.beging,true,false));
按钮秒=新按钮(行,SWT.PUSH);
second.setText(“second”+i);
setLayoutData(新的GridData(SWT.FILL,SWT.start,true,false));
}
}
这是启动后的样子:
调整大小后:
附带说明:如果您还没有阅读过Eclipse中关于布局的教程,我建议您阅读该教程。每个SWT开发人员都应该阅读它。感谢您的帮助。我如何才能获得相同的功能,但列的大小不同?我使用嵌套的gridlayouts来近似我想要的外观。再次感谢。谢谢你的帮助。我如何才能获得相同的功能,但列的大小不同?我使用嵌套的gridlayouts来近似我想要的外观。再次感谢。