SWT之GridLayout使用详解

SWT当中的GridLayout是一个非常灵活的控件,但是在使用起来需要在控制上下一番功夫.大家都知道,JAVA在写编写窗口程序 的时候,物件的添加,放置 操作起来要比.net费劲的多,但是如果用好了相关org.eclipse.layout.*包当中的相关类,也会写出十分漂亮的界面程序.

 

先看下面的代码。解释一下,放在gridlayout中控件是根据定义时候的顺序放置的。

package ddd; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Monitor; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class TestGridLayout { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Find (GridLayout)"); Label label = new Label(shell, SWT.NONE); label.setText("Find what:"); Text text = new Text(shell, SWT.BORDER); Button findButton = new Button(shell, SWT.PUSH); findButton.setText("Find Next"); Group group = new Group(shell, SWT.NONE); group.setLayout(new RowLayout()); Button upButton = new Button(group, SWT.RADIO); upButton.setText("Up"); Button downButton = new Button(group, SWT.RADIO); downButton.setText("Down"); downButton.setSelection(true); group.setText("Direction"); Button cancelButton = new Button(shell, SWT.PUSH); cancelButton.setText("Cancel"); /* Use a GridLayout to position the controls */ Monitor monitor = shell.getMonitor(); int width = monitor.getClientArea().width / 10; GridLayout layout = new GridLayout(4, false); layout.marginWidth = layout.marginHeight = 14;// layout leave's the // window's space shell.setLayout(layout); GridData labelData = new GridData(SWT.FILL, SWT.CENTER, false, false); label.setLayoutData(labelData); GridData textData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); textData.widthHint = width; text.setLayoutData(textData); GridData findData = new GridData(SWT.FILL, SWT.CENTER, false, false); findButton.setLayoutData(findData); GridData groupData = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 3, 1); group.setLayoutData(groupData); GridData cancelData = new GridData(SWT.FILL, SWT.CENTER, false, false); cancelButton.setLayoutData(cancelData); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }

 

 

这其中我们在使用的时候应该要注意以下几点:
1.要选择自己适合 的Layout类型.GridLayout适合于多种情况,它大部分情况是使用在较为复杂的界面编程当中,因为复杂的界面会有相当多的控件.
2.GridData 的使用将是一个控制界面显示的主要类.通过使用GridData我们可以很好的控制界面.其中GridData的构造函数比较多,但是相关的使用我们都应该熟悉,特别是上面源程序当中使用的那个构造函数,在使用起来更容易控制 GridLayout的布局.通过horizantalSpan,VerticalSpan来控制控件所占用的单元格,这样就会控制其它控制是否在一列当 中显示还是在几列当中显示.前提是通过GridLayout.numColumns来设置列数.
3.如果不设置GridData那么相关 的控件都会按照相关的建立顺序加入到GridLayout当中.GridData不能控制控件的显示顺序,而相关顺序是对象的建立顺序来控制的.这一点不 要与GridData混淆了.

你可能感兴趣的:(shell,String,layout,Class,button,SWT)