`
冷漠过客
  • 浏览: 5925 次
社区版块
存档分类
最新评论

SWT 高级控件介绍(2)

 
阅读更多

上面我们介绍了,树和表格,还有选项卡。这次我们来介绍下: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/
谢谢大家
  • 大小: 9.6 KB
  • 大小: 5.5 KB
  • 大小: 9.4 KB
  • 大小: 9.3 KB
  • 大小: 76.8 KB
分享到:
评论

相关推荐

    swt高级密笈源码swt

    "SWT高级密笈源码"很可能是针对SWT库深入理解和实践的代码示例集合,旨在帮助开发者掌握SWT的高级用法。 本资源包含的"Sample Code"可能是各种基于SWT的实例代码,这些代码涵盖了SWT的各种组件、布局管理、事件处理...

    SWT/JFace 控件实例

    JFace包含了一些高级控件和数据绑定机制,例如对话框、表单、视图管理器等,这些都帮助开发者快速创建用户界面。 ### SWT和JFace的结合使用 在实际开发中,开发者通常会结合SWT和JFace。SWT用于创建底层的控件和...

    高级控件使用

    高级控件使用 高级控件使用 高级控件使用 高级控件使用高级控件使用 高级控件使用 高级控件使用

    SWT基础代码涵盖其所有控件

    在实际开发中,SWT和JFace通常一起使用,SWT提供底层的控件和事件处理,而JFace则提供了更高级的抽象和工具,简化了开发过程。例如,通过JFace的DataBinding机制,开发者可以轻松地实现模型与视图之间的数据同步。 ...

    Eclipse SWT JFace核心应用_pdf_含标签_目录

    《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。

    SWT控件

    Eclipse中的`SWT`控件和`JFace`(SWT的高级抽象层)共同构建了强大的用户界面,使得开发者可以方便地创建复杂的工作流和工具视图。 ### 示例代码:Lists.java 在`Lists.java`中,可能包含了使用SWT创建列表控件的...

    Eclipse SWT JFace核心应用 PDF.part2 of 3

    第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...

    Eclipse SWT/Jface核心应用(2)

    《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。

    swt网页布局介绍Layout

    在SWT中,布局(Layout)扮演着至关重要的角色,它负责控制控件的排列方式和大小,确保界面在不同屏幕尺寸和分辨率下都能有良好的显示效果。 布局管理器主要有以下几种: 1. **FillLayout**:填充布局是最简单的...

    swt2.rarswt2.rarswt2.rarswt2.rarswt2.rar

    2. SWT组件:详细讲解各种控件,如按钮、文本框、列表、树视图等,以及它们的用法和属性设置。 3. 事件处理:如何在SWT中添加事件监听器,处理用户的交互,如点击、键入等。 4. 布局管理:解释不同的布局策略,如...

    Eclipse SWT JFace核心应用 PDF.part1 of 3

    第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...

    Eclipse SWT JFace核心应用 PDF.part3 of 3

    第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。 本书结构清晰,注重实用,...

    Eclipse SWT/Jface核心应用(1)

    《Eclipse SWT/Jface核心应用》...第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。

    SWT/JFace专题 --- SWT/JFace概述

    它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计功能。 SWT 是一个直接与操作系统进行交互的库,它提供了与本机平台兼容的窗口、按钮、列表等控件。SWT 的优势在于其性能高效,因为它...

    swt-api swt DOC

    【标题】"swt-api swt DOC" 指的是一个关于SWT(Standard Widget Toolkit)API的...通过深入研究这个文档,开发者不仅可以掌握SWT的基本用法,还能了解到高级特性和优化技巧,从而提升其在Java GUI编程领域的专业能力。

    SWT JFace 按键、事件、监听

    SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形用户界面;而JFace则在此基础上提供了更高级别的...

    SWT的详解,例子,介绍

    9. **高级主题**:包括线程同步、自定义控件的测试、性能测试等方面,适合进阶学习者。 在深入学习和使用SWTBOT的过程中,不断实践和调试是至关重要的。通过《SWTBOT Tutorial》这样的资源,开发者能够逐步掌握这个...

    SWT界面设计PDF

    "SWT开发参考文档.pdf"是一份详细的SWT指南,涵盖了从基本组件如按钮、文本框到高级控件如表格、树视图等的所有内容。你将学习如何创建窗口、布局管理器的使用,以及如何处理事件。此外,文档还介绍了JFace和Eclipse...

    Eclipse_Swt_Jface_核心应用_part01_of_19

    第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其应用。第5篇介绍了最新的RCP应用程序的开发。. 本书结构清晰,注重实用,...

    SWT的官方压缩包

    `JFace`标签暗示了这个压缩包可能也包含了JFace库,JFace是基于SWT构建的,提供了如对话框、表视图、树视图等高级控件,以及数据绑定和事件处理机制,让开发者能够更专注于业务逻辑而不是底层GUI的实现。 `....

Global site tag (gtag.js) - Google Analytics