其实刚刚学习SWT/Jface 不久,之前对AWT有所了解,所以很容易上手。
刚开始我要做一个界面设计,需要用布局完成界面框架,然而这个SWT的布局让我迷惑不已,
我基本上把其中的所有的layout用完了,Filllayout、GridLayout、甚至连sashform都用上了各种组合,
搞得页面那个不堪不已啊,自己都无法忍受,最后实在没办法了而且也就剩下formlayout没有尝试过了。
因为在学习的时候我真的没有发现formlayout 有什么用处、有什么特色,真是失算... 后来仔细研究了一把结果恍然大悟,其实那么多布局,两个就够了,
Filllayout和formlayout。 两个的共同特点就是可以自适应屏,formlayout 就是他提供一中类似于html中百分比一样的东东,
而filllayout呢他提是提供填满效果,两者互不。基本上可以解决大多数情况。
强行插入图片:
下面给出代码:
package export; import org.eclipse.swt.SWT; public class TestFormLayout extends Shell { /** * Launch the application. * @param args */ public static void main(String args[]) { try { Display display = Display.getDefault(); TestFormLayout shell = new TestFormLayout(display); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } catch (Exception e) { e.printStackTrace(); } } Composite composite_left; Composite composite_right; Composite composite_header; Composite composite_bottom; /** * Create the shell. * @param display */ public TestFormLayout(Display display) { super(display, SWT.SHELL_TRIM); setSize(571, 421); setLayout(new FillLayout(SWT.HORIZONTAL)); Composite composite_main = new Composite(this, SWT.NONE); composite_main.setLayout(new FormLayout()); composite_header = new Composite(composite_main, SWT.BORDER); FormData fd_composite_header = new FormData(); fd_composite_header.bottom = new FormAttachment(0, 50); fd_composite_header.right = new FormAttachment(100); fd_composite_header.top = new FormAttachment(0); fd_composite_header.left = new FormAttachment(0); composite_header.setLayoutData(fd_composite_header); Button btnSsss = new Button(composite_header, SWT.NONE); btnSsss.setBounds(107, 10, 80, 27); btnSsss.setText("TT2"); Button btnSdfsdf = new Button(composite_header, SWT.NONE); btnSdfsdf.setBounds(212, 10, 80, 27); btnSdfsdf.setText("TT3"); Button eeee = new Button(composite_header, SWT.NONE); eeee.setBounds(10, 10, 80, 27); eeee.setText("TT1"); composite_bottom = new Composite(composite_main, SWT.BORDER); FormData fd_composite_bottom = new FormData(); fd_composite_bottom.top = new FormAttachment(100, -20); fd_composite_bottom.right = new FormAttachment(100); fd_composite_bottom.bottom = new FormAttachment(100); fd_composite_bottom.left = new FormAttachment(0); composite_bottom.setLayoutData(fd_composite_bottom); composite_right = new Composite(composite_main, SWT.NONE); FormData fd_composite_right = new FormData(); fd_composite_right.bottom = new FormAttachment(composite_bottom); fd_composite_right.top = new FormAttachment(composite_header, 0); fd_composite_right.left = new FormAttachment(100, -130); fd_composite_right.right = new FormAttachment(composite_header, 0, SWT.RIGHT); composite_right.setLayoutData(fd_composite_right); Label lblNewLabel_1 = new Label(composite_right, SWT.NONE); lblNewLabel_1.setBounds(10, 94, 61, 17); lblNewLabel_1.setText("New Label"); //left composite_left = new Composite(composite_main, SWT.NONE); FormData fd_composite_left = new FormData(); fd_composite_left.bottom = new FormAttachment(composite_bottom,0); Label label = new Label(composite_bottom, SWT.NONE); label.setText(" \u4E3B\u7A0B\u5E8F\u7248\u672C:"); label.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_BLUE)); label.setAlignment(SWT.RIGHT); label.setBounds(0, 0, 99, 17); Link link = new Link(composite_bottom, 0); link.setText("<a>\u68C0\u67E5\u66F4\u65B0</a>"); link.setBounds(296, 0, 99, 17); Label label_1 = new Label(composite_bottom, SWT.NONE); label_1.setText(" 13.3.7"); label_1.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_BLUE)); label_1.setBounds(105, 0, 86, 17); Label label_2 = new Label(composite_bottom, SWT.NONE); label_2.setText("\u5DF2\u7ECF\u8FDE\u63A5\u5230\u670D\u52A1\u5668"); label_2.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_BLUE)); label_2.setBounds(424, 0, 117, 17); fd_composite_left.right = new FormAttachment(composite_right,0); fd_composite_left.top = new FormAttachment(composite_header, 0); fd_composite_left.left = new FormAttachment(0, 0); composite_left.setLayoutData(fd_composite_left); createContents(); } /** * Create contents of the shell. */ protected void createContents() { } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } }