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/ 谢谢大家

猜你喜欢

转载自dingjinhong123.iteye.com/blog/2298711
swt
今日推荐