上面我们介绍了,树和表格,还有选项卡。这次我们来介绍下:link,List,Combo,Browser。
1.link
Styles:BORDER.
Events:Selection,其他也都是Control 默认能出发的event
例子:
Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Link link = new Link(shell, SWT.NONE); String text = "The SWT component is designed to provide <a>efficient</a>, <a>portable</a> <a href=\"native\">access to the user-interface facilities of the operating systems</a> on which it is implemented."; link.setText(text); // link.setSize(60, 400); link.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { System.out.println("Selection: " + event.text); } }); shell.setSize(400,400); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose();
效果图:
2.List:
Styles:SINGLE,MULTI,H_SCROLL,V_SCROLL,BORDER.
Events:Selection,其他也都是Control 默认能出发的event.
列子:
public void show_List(Composite parent) { String[] testArr = new String[] { "1", "2", "3", "4", "5" }; List sList = new List(parent, SWT.BORDER | SWT.SINGLE); sList.setItems(testArr); List mList = new List(parent, SWT.BORDER | SWT.MULTI); mList.setItems(testArr); List scList = new List(parent, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); scList.setItems(testArr); List smList = new List(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); smList.setItems(testArr); } public static void main(String[] args) { // TODO Auto-generated method stub Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout(SWT.VERTICAL)); (new TestList()).show_List(shell); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
效果图:
3.Combo:
Styles:DROP_DOWN,SIMPLE,READ_ONLY.
Events:ModifyListener,SelectionListener,VerifyListener,其他也都是Control 默认能出发的event。
例子:
String[] WEEK = { "Monday", "Tuesday", "Wednesday"}; Display display = new Display(); Shell shell = new Shell(display); shell.setBounds(500, 100, 500, 300); shell.setText("Combo"); shell.setLayout(new GridLayout(3, true)); //´´½¨Combo×é¼þ£¬ÎªÏÂÀÁбíÑùʽ final Combo dc = new Combo(shell, SWT.DROP_DOWN); dc.setItems(WEEK); dc.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { String key = ""+dc.getSelectionIndex(); String value = dc.getText(); System.out.println("key:"+key+" value:"+value); } }); //´´½¨Combo×é¼þ£¬ÎªÏÂÀÁбíÑùʽ£¬ÇÒÖ»¶Á final Combo rc = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY); String[] items={"scorm 2004","scorm 1.2"}; rc.setItems(items); rc.select(0); rc.setData("0","scorm2004"); rc.setData("1","scorm1.2"); rc.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { String key = ""+rc.getSelectionIndex(); System.out.println("key:"+key); String value = (String) rc.getData(key); System.out.println("key:"+key+" value:"+value); } }); //rc.setItems(MONTHS); //´´½¨Combo×é¼þ£¬ÎªList×é¼þÑùʽ Combo sc = new Combo(shell, SWT.SIMPLE); sc.setItems(WEEK); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); }
效果图:
4.Browser:
Styles:MOZILLA,WEBKIT,BORDER.
Events:AuthenticationListener(认证监听),CloseWindowListener,LocationListener,OpenWindowListener,ProgressListener,StatusTextListener,TitleListener,VisibilityWindowListener,其他也都是Control 默认能出发的event
例子:
import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Text; public class TestBrowse { //¶¨Òåä¯ÀÀÆ÷µÄ±êÌâ public static final String APP_TITLE = "Simple SWT Browser"; //¶¨ÒåÖ÷Ò³µÄurl public static final String HOME_URL = "http://www.eclipse.org/vep/"; //ÉùÃ÷Ö÷´°¿ÚºÍÆäËü¿Ø¼þ private org.eclipse.swt.widgets.Shell sShell = null; private Button backButton = null;//ºóÍË°´Å¥ private Button forwardButton = null;//Ç°½ø°´Å¥ private Button stopButton = null;//Í£Ö¹°´Å¥ private Text locationText = null;//ÏÔʾurlµÄÎı¾¿ò private Button goButton = null;//תÏò°´Å¥ private Browser browser = null;//ä¯ÀÀÆ÷¶ÔÏó private Button homeButton = null;//Ö÷Ò³°´Å¥ private Label statusText = null;//ÏÔʾä¯ÀÀÆ÷״̬µÄÎı¾¿ò private ProgressBar progressBar = null;//×°ÔØÒ³ÃæʱµÄ½ø¶ÈÌõ private Button refreshButton = null;//ˢа´Å¥ //³õʼ»¯ä¯ÀÀÆ÷ private void createBrowser() { org.eclipse.swt.layout.GridData gridData3 = new org.eclipse.swt.layout.GridData(); //´´½¨ä¯ÀÀÆ÷¶ÔÏó browser = new Browser(sShell, SWT.BORDER); gridData3.horizontalSpan = 7; gridData3.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData3.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData3.grabExcessVerticalSpace = true; //ÉèÖÃä¯ÀÀÆ÷²¼¾Ö browser.setLayoutData(gridData3); //Ϊä¯ÀÀÆ÷×¢²á±êÌâ¸Ä±äʼþ browser.addTitleListener(new org.eclipse.swt.browser.TitleListener() { public void changed(org.eclipse.swt.browser.TitleEvent e) { sShell.setText(APP_TITLE + " - " + e.title); } }); //Ϊä¯ÀÀÆ÷×¢²áµØÖ·¸Ä±äʼþ browser.addLocationListener(new org.eclipse.swt.browser.LocationListener() { public void changing(org.eclipse.swt.browser.LocationEvent e) { locationText.setText(e.location); } public void changed(org.eclipse.swt.browser.LocationEvent e) { } }); //Ϊä¯ÀÀÆ÷×¢²á×°ÔØÍøҳʼþ browser.addProgressListener(new org.eclipse.swt.browser.ProgressListener() { //µ±×°ÔØʱ£¬ÉèÖÃ×°ÔصĽø¶È£¬²¢ÇÒÉèÖÃÍ£Ö¹°´Å¥¿ÉÓà public void changed(org.eclipse.swt.browser.ProgressEvent e) { if (!stopButton.isEnabled() && e.total != e.current) { stopButton.setEnabled(true); } progressBar.setMaximum(e.total); progressBar.setSelection(e.current); } //×°ÔØÍê³ÉºóÉèÖÃÍ£Ö¹°´Å¥£¬ºóÍË°´Å¥£¬Ç°½ø°´Å¥ºÍ½ø¶ÈÌõµÄ״̬ public void completed(org.eclipse.swt.browser.ProgressEvent e) { stopButton.setEnabled(false); backButton.setEnabled(browser.isBackEnabled()); forwardButton.setEnabled(browser.isForwardEnabled()); progressBar.setSelection(0); } }); //×¢²áä¯ÀÀÆ÷״̬¸Ä±äʼþ browser.addStatusTextListener(new org.eclipse.swt.browser.StatusTextListener() { public void changed(org.eclipse.swt.browser.StatusTextEvent e) { statusText.setText(e.text); } }); //³õʼ״̬´ò¿ªÖ÷Ò³µÄurl browser.setUrl(HOME_URL); } public static void main(String[] args) { org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault(); TestBrowse thisClass = new TestBrowse(); thisClass.createSShell(); thisClass.sShell.open(); while (!thisClass.sShell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } //´´½¨´°¿ÚºÍ´°¿ÚµÄ¿Ø¼þ private void createSShell() { sShell = new org.eclipse.swt.widgets.Shell(); org.eclipse.swt.layout.GridLayout gridLayout1 = new GridLayout(); org.eclipse.swt.layout.GridData gridData2 = new org.eclipse.swt.layout.GridData(); org.eclipse.swt.layout.GridData gridData4 = new org.eclipse.swt.layout.GridData(); org.eclipse.swt.layout.GridData gridData5 = new org.eclipse.swt.layout.GridData(); org.eclipse.swt.layout.GridData gridData6 = new org.eclipse.swt.layout.GridData(); org.eclipse.swt.layout.GridData gridData7 = new org.eclipse.swt.layout.GridData(); org.eclipse.swt.layout.GridData gridData8 = new org.eclipse.swt.layout.GridData(); backButton = new Button(sShell, SWT.ARROW | SWT.LEFT); forwardButton = new Button(sShell, SWT.ARROW | SWT.RIGHT); stopButton = new Button(sShell, SWT.NONE); refreshButton = new Button(sShell, SWT.NONE); homeButton = new Button(sShell, SWT.NONE); locationText = new Text(sShell, SWT.BORDER); goButton = new Button(sShell, SWT.NONE); createBrowser(); progressBar = new ProgressBar(sShell, SWT.BORDER); statusText = new Label(sShell, SWT.NONE); sShell.setText(APP_TITLE); sShell.setLayout(gridLayout1); gridLayout1.numColumns = 7; backButton.setEnabled(false); backButton.setToolTipText("Navigate back to the previous page"); backButton.setLayoutData(gridData6); forwardButton.setEnabled(false); forwardButton.setToolTipText("Navigate forward to the next page"); forwardButton.setLayoutData(gridData5); stopButton.setText("Stop"); stopButton.setEnabled(false); stopButton.setToolTipText("Stop the loading of the current page"); goButton.setText("Go!"); goButton.setLayoutData(gridData8); goButton.setToolTipText("Navigate to the selected web address"); gridData2.grabExcessHorizontalSpace = true; gridData2.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData2.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; locationText.setLayoutData(gridData2); locationText.setText(HOME_URL); locationText.setToolTipText("Enter a web address"); homeButton.setText("Home"); homeButton.setToolTipText("Return to home page"); statusText.setText("Done"); statusText.setLayoutData(gridData7); gridData4.horizontalSpan = 5; progressBar.setLayoutData(gridData4); progressBar.setEnabled(false); progressBar.setSelection(0); gridData5.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData5.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData6.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData6.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData7.horizontalSpan = 1; gridData7.grabExcessHorizontalSpace = true; gridData7.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData7.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; gridData8.horizontalAlignment = org.eclipse.swt.layout.GridData.END; gridData8.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; refreshButton.setText("Refresh"); refreshButton.setToolTipText("Refresh the current page"); sShell.setSize(new org.eclipse.swt.graphics.Point(553, 367)); //×¢²áÏÔʾµØÖ·µÄÎı¾¿òʼþ locationText.addMouseListener(new org.eclipse.swt.events.MouseAdapter() { public void mouseUp(org.eclipse.swt.events.MouseEvent e) { locationText.selectAll(); } }); locationText.addKeyListener(new org.eclipse.swt.events.KeyAdapter() { public void keyPressed(org.eclipse.swt.events.KeyEvent e) { // Handle the press of the Enter key in the locationText. // This will browse to the entered text. if (e.character == SWT.LF || e.character == SWT.CR) { e.doit = false; browser.setUrl(locationText.getText()); } } }); refreshButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.refresh();//ÖØÐÂÔØÈë } }); locationText.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.setUrl(locationText.getText());//ÉèÖÃä¯ÀÀÆ÷µÄÖ¸ÏòµÄurl } }); stopButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.stop();//Í£Ö¹×°ÔØÍøÒ³ } }); backButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.back();//ºóÍË } }); forwardButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.forward();//Ç°½ø } }); homeButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.setUrl(HOME_URL);//ÉèÖÃÖ÷Ò³ } }); goButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { browser.setUrl(locationText.getText());//תÏòµØÖ·µÄÍøÒ³ } }); }
效果图:
参考资料:
http://www.eclipse.org/swt/widgets/
相关推荐
"SWT高级密笈源码"很可能是针对SWT库深入理解和实践的代码示例集合,旨在帮助开发者掌握SWT的高级用法。 本资源包含的"Sample Code"可能是各种基于SWT的实例代码,这些代码涵盖了SWT的各种组件、布局管理、事件处理...
JFace包含了一些高级控件和数据绑定机制,例如对话框、表单、视图管理器等,这些都帮助开发者快速创建用户界面。 ### SWT和JFace的结合使用 在实际开发中,开发者通常会结合SWT和JFace。SWT用于创建底层的控件和...
高级控件使用 高级控件使用 高级控件使用 高级控件使用高级控件使用 高级控件使用 高级控件使用
在实际开发中,SWT和JFace通常一起使用,SWT提供底层的控件和事件处理,而JFace则提供了更高级的抽象和工具,简化了开发过程。例如,通过JFace的DataBinding机制,开发者可以轻松地实现模型与视图之间的数据同步。 ...
《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。
Eclipse中的`SWT`控件和`JFace`(SWT的高级抽象层)共同构建了强大的用户界面,使得开发者可以方便地创建复杂的工作流和工具视图。 ### 示例代码:Lists.java 在`Lists.java`中,可能包含了使用SWT创建列表控件的...
第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...
《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。
在SWT中,布局(Layout)扮演着至关重要的角色,它负责控制控件的排列方式和大小,确保界面在不同屏幕尺寸和分辨率下都能有良好的显示效果。 布局管理器主要有以下几种: 1. **FillLayout**:填充布局是最简单的...
2. SWT组件:详细讲解各种控件,如按钮、文本框、列表、树视图等,以及它们的用法和属性设置。 3. 事件处理:如何在SWT中添加事件监听器,处理用户的交互,如点击、键入等。 4. 布局管理:解释不同的布局策略,如...
第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...
第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...
《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。
它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计功能。 SWT 是一个直接与操作系统进行交互的库,它提供了与本机平台兼容的窗口、按钮、列表等控件。SWT 的优势在于其性能高效,因为它...
【标题】"swt-api swt DOC" 指的是一个关于SWT(Standard Widget Toolkit)API的...通过深入研究这个文档,开发者不仅可以掌握SWT的基本用法,还能了解到高级特性和优化技巧,从而提升其在Java GUI编程领域的专业能力。
SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形用户界面;而JFace则在此基础上提供了更高级别的...
9. **高级主题**:包括线程同步、自定义控件的测试、性能测试等方面,适合进阶学习者。 在深入学习和使用SWTBOT的过程中,不断实践和调试是至关重要的。通过《SWTBOT Tutorial》这样的资源,开发者能够逐步掌握这个...
"SWT开发参考文档.pdf"是一份详细的SWT指南,涵盖了从基本组件如按钮、文本框到高级控件如表格、树视图等的所有内容。你将学习如何创建窗口、布局管理器的使用,以及如何处理事件。此外,文档还介绍了JFace和Eclipse...
第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。. 本书结构清晰,注重实用,...
`JFace`标签暗示了这个压缩包可能也包含了JFace库,JFace是基于SWT构建的,提供了如对话框、表视图、树视图等高级控件,以及数据绑定和事件处理机制,让开发者能够更专注于业务逻辑而不是底层GUI的实现。 `....