<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23, comments - 0, trackbacks - 0, articles - 3
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    eclipse swt 程序解讀

    Posted on 2008-08-18 17:04 beauty9235 閱讀(222) 評(píng)論(0)  編輯  收藏

    作者: beauty9235  鏈接:http://beauty9235.javaeye.com/blog/229627  發(fā)表時(shí)間: 2008年07月23日

    聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.PaintEvent;
    import org.eclipse.swt.events.PaintListener;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.graphics.Image;
    import org.eclipse.swt.layout.FormAttachment;
    import org.eclipse.swt.layout.FormData;
    import org.eclipse.swt.layout.FormLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Canvas;
    import org.eclipse.swt.widgets.Combo;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.FileDialog;
    import org.eclipse.swt.widgets.Group;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.widgets.List;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;
    
    public class DogShowRegistrationWindow {
    	/*
    	 * 參考文章
    	 * http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html
    	 * http://www.ibm.com/developerworks/cn/linux/opensource/os-ecgui1/index.html
    	 * http://www.ibm.com/developerworks/cn/linux/opensource/os-ecgui2/index.html
    	 * http://www.ibm.com/developerworks/cn/linux/opensource/os-ecgui3/index.html
    	 * http://www-128.ibm.com/developerworks/cn/opensource/os-swingswt/
    	 * http://www.tkk7.com/fortune/archive/2006/03/09/34463.html
    	 */	
    	Image dogImage;
    	Text dogNameText;
    	Combo dogBreedCombo;
    	Canvas dogPhoto;
    	List categories;
    	Text nameText;
    	Text phoneText;
    
    	public static void main(String[] args) {
    		Display display = new Display();
    		Shell shell = new DogShowRegistrationWindow().createShell(display);
    		shell.open();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch())
    				display.sleep();
    		}
    	}
    	
    	public Shell createShell(final Display display) {
    		final Shell shell = new Shell(display);//通用窗口 
    		FormLayout layout = new FormLayout();//布局管理器 
    		layout.marginWidth = 5;
    		layout.marginHeight = 5;
    		shell.setLayout(layout);
    		shell.setText("Dog Show Entry");
    	    //****************************定義布局所要用的資源開(kāi)始****************************
    		//定義dog name標(biāo)簽
    		Label dogName = new Label(shell, SWT.NONE);//顯示靜態(tài)文本 
    		dogName.setText("Dog's Name:");
    		//定義dog name的文本輸入框
    		dogNameText = new Text(shell, SWT.SINGLE | SWT.BORDER);//文本輸入 
    		//定義dog greed標(biāo)簽
    		Label dogBreed = new Label(shell, SWT.NONE);
    		dogBreed.setText("Breed:");
    		//定義一個(gè)dog greed多選框
    		dogBreedCombo = new Combo(shell, SWT.NONE);
    		dogBreedCombo.setItems(new String[] { "Collie", "Pitbull", "Poodle","Scottie", "Black Lab" });//從一個(gè)下拉列表中選擇
    		//定義photo標(biāo)簽
    		Label photo = new Label(shell, SWT.NONE);
    		photo.setText("Photo:");
    		//定義photo顯示域
    		dogPhoto = new Canvas(shell, SWT.BORDER);//繪圖區(qū)域;可能用于定制控件 
    		//定義Photo Browse按鈕
    		Button browse = new Button(shell, SWT.PUSH);
    		browse.setText("Browse...");
    		//定義Photo Delete按鈕
    		Button delete = new Button(shell, SWT.PUSH);//簡(jiǎn)單按下具有文本的按鈕 
    		delete.setText("Delete");
    		//定義分類標(biāo)簽
    		Label cats = new Label(shell, SWT.NONE);
    		cats.setText("Categories");
    		//定義分類List
    		categories = new List(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);//從條目列表中進(jìn)行選擇 
    		categories.setItems(new String[] { "Best of Breed", "Prettiest Female",
    				"Handsomest Male", "Best Dressed", "Fluffiest Ears",
    				"Most Colors", "Best Performer", "Loudest Bark",
    				"Best Behaved", "Prettiest Eyes", "Most Hair", "Longest Tail",
    				"Cutest Trick" });
    		//定義一個(gè)組
    		Group ownerInfo = new Group(shell, SWT.NONE);//其他控件的有邊界和標(biāo)題的通用容器 
    		ownerInfo.setText("Owner Info");
    		FormLayout ownerLayout = new FormLayout();//布局管理器 
    		ownerLayout.marginWidth = 5;
    		ownerLayout.marginHeight = 5;
    		ownerInfo.setLayout(ownerLayout);
    		
    		//定義Enter按鈕
    		Button enter = new Button(shell, SWT.PUSH);
    		enter.setText("Enter");
    		//****************************定義布局所要用的資源結(jié)束****************************
    		FormData data = new FormData();
    		data.top = new FormAttachment(dogNameText, 0, SWT.CENTER);
    		dogName.setLayoutData(data);//定義dogName與dogNameText的中心位置對(duì)齊
    		
    		data = new FormData();
    		data.left = new FormAttachment(dogName, 5);
    		data.right = new FormAttachment(100, 0);
    		dogNameText.setLayoutData(data);//定義dogNameText左邊距dogName5個(gè)點(diǎn)數(shù)的偏移  右邊100%填充
    		
    		data = new FormData();
    		data.top = new FormAttachment(dogBreedCombo, 0, SWT.CENTER);
    		dogBreed.setLayoutData(data);
    		//定義dogBreed項(xiàng)部距dogBreedCombo 0個(gè)點(diǎn)數(shù)的偏移 與dogBreedCombo標(biāo)簽的中心位置對(duì)齊 
    		
    		data = new FormData();
    		data.top = new FormAttachment(dogNameText, 5);
    		data.left = new FormAttachment(dogNameText, 0, SWT.LEFT);
    		data.right = new FormAttachment(categories, -5);
    		dogBreedCombo.setLayoutData(data);
    		//定義dogBreedCombo項(xiàng)部距dogNameText 5個(gè)點(diǎn)數(shù)的偏移
    		//定義dogBreedCombo左邊與 dogNameText的左邊對(duì)齊
    		//定義dogBreedCombo右邊距 categories左邊5個(gè)點(diǎn)數(shù)的偏移
    		
    		data = new FormData(80, 80);
    		data.top = new FormAttachment(dogBreedCombo, 5);
    		data.left = new FormAttachment(dogNameText, 0, SWT.LEFT);
    		data.right = new FormAttachment(categories, -5);
    		data.bottom = new FormAttachment(ownerInfo, -5);
    		dogPhoto.setLayoutData(data);
    		//定義dogPhoto大小為80X80
    		//定義dogPhoto頂邊與dogBreedCombo底邊點(diǎn)數(shù)的偏移
    		//定義dogPhoto左邊與dogNameText左邊對(duì)齊
    		//定義dogPhoto右邊距categories 5個(gè)點(diǎn)數(shù)的偏移
    		//定義dogPhoto底邊距ownerInfo 5個(gè)點(diǎn)數(shù)的偏移
    		dogPhoto.addPaintListener(new PaintListener() {
    			public void paintControl(final PaintEvent event) {
    				if (dogImage != null) {
    					event.gc.drawImage(dogImage, 0, 0);
    				}
    			}
    		});
    		
    		data = new FormData();
    		data.top = new FormAttachment(dogPhoto,0, SWT.TOP);
    		photo.setLayoutData(data);
    		//定義photo頂邊與 dogPhoto的頂邊對(duì)齊
    		
    		data = new FormData();
    		data.top = new FormAttachment(photo, 5);
    		data.right = new FormAttachment(dogPhoto, -5);
    		browse.setLayoutData(data);
    		//定義photo頂邊距 photo 5個(gè)點(diǎn)數(shù)的偏移
    		//定義photo右邊距 dogPhoto 5個(gè)點(diǎn)數(shù)的偏移
    		browse.addSelectionListener(new SelectionAdapter() {
    			public void widgetSelected(SelectionEvent event) {
    				String fileName = new FileDialog(shell).open();//用來(lái)顯示一個(gè)文件對(duì)話
    				if (fileName != null) {
    					dogImage = new Image(display, fileName);
    				}
    			}
    		});
    		
    		data = new FormData();
    		data.top = new FormAttachment(browse, 5);
    		data.left = new FormAttachment(browse, 0, SWT.LEFT);
    		data.right = new FormAttachment(dogPhoto, -5);
    		delete.setLayoutData(data);
    		//定義delete頂邊距 browse 5個(gè)點(diǎn)數(shù)的偏移
    		//定義delete左邊與 browse 左邊對(duì)齊
    		//定義delete右邊距 dogPhoto 5個(gè)點(diǎn)數(shù)的偏移
    		delete.addSelectionListener(new SelectionAdapter() {
    			public void widgetSelected(SelectionEvent event) {
    				if (dogImage != null) {
    					dogImage.dispose();
    					dogImage = null;
    					dogPhoto.redraw();
    				}
    			}
    		});
    		
    		data = new FormData(90, 140);
    		data.top = new FormAttachment(dogPhoto, 0, SWT.TOP);
    		data.right = new FormAttachment(100, 0);
    		data.bottom = new FormAttachment(enter, -5);
    		categories.setLayoutData(data);
    		//定義categories頂邊與 dogPhoto的頂邊對(duì)齊
    		//定義categories右邊100% 填充
    		//定義categories底邊距底邊父組件 5個(gè)點(diǎn)數(shù)的偏移 
    		
    		data = new FormData();
    		data.bottom = new FormAttachment(categories, -5);
    		data.left = new FormAttachment(categories, 0, SWT.CENTER);
    		cats.setLayoutData(data);
    		//定義cats底邊與 categories的底邊 5個(gè)點(diǎn)數(shù)的偏移
    		//定義cats左邊與 categories 的中心對(duì)齊
    		
    		data = new FormData();
    		data.right = new FormAttachment(100, 0);
    		data.bottom = new FormAttachment(100, 0);
    		enter.setLayoutData(data);
    		enter.addSelectionListener(new SelectionAdapter() {
    			public void widgetSelected(SelectionEvent event) {
    				System.out.println("\nDog Name: " + dogNameText.getText());
    				System.out.println("Dog Breed: " + dogBreedCombo.getText());
    				System.out.println("Owner Name: " + nameText.getText());
    				System.out.println("Owner Phone: " + phoneText.getText());
    				System.out.println("Categories:");
    				String cats[] = categories.getSelection();
    				for (int i = 0; i < cats.length; i++) {
    					System.out.println("\t" + cats[i]);
    				}
    			}
    		});
    		
    		data = new FormData();
    		data.bottom = new FormAttachment(enter, -5);
    		data.left = new FormAttachment(0, 0);
    		data.right = new FormAttachment(categories, -5);
    		ownerInfo.setLayoutData(data);
    		
    		Label name = new Label(ownerInfo, SWT.NULL);
    		name.setText("Name:");
    		
    		Label phone = new Label(ownerInfo, SWT.PUSH);
    		phone.setText("Phone:");
    		
    		nameText = new Text(ownerInfo, SWT.SINGLE | SWT.BORDER);
    		phoneText = new Text(ownerInfo, SWT.SINGLE | SWT.BORDER);
    		
    		data = new FormData();
    		data.top = new FormAttachment(nameText, 0, SWT.CENTER);
    		name.setLayoutData(data);
    		
    		data = new FormData();
    		data.top = new FormAttachment(phoneText, 0, SWT.CENTER);
    		phone.setLayoutData(data);
    		
    		data = new FormData();
    		data.left = new FormAttachment(phone, 5);
    		data.right = new FormAttachment(100, 0);
    		nameText.setLayoutData(data);
    		
    		data = new FormData();
    		data.left = new FormAttachment(nameText, 0, SWT.LEFT);
    		data.right = new FormAttachment(100, 0);
    		data.top = new FormAttachment(55, 0);
    		phoneText.setLayoutData(data);
    		
    		shell.pack();
    		
    		return shell;
    	}	
    }
    

    本文的討論也很精彩,瀏覽討論>>


    JavaEye推薦




    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久热中文字幕在线精品免费| 中文精品人人永久免费| 成人免费在线看片| 久久久久亚洲AV无码网站| 久久九九全国免费| 久久国产精品亚洲一区二区| 国产自国产自愉自愉免费24区| 国产AV无码专区亚洲AV漫画| 中文字幕免费在线视频| 亚洲精品自产拍在线观看| 华人在线精品免费观看| 中文字幕亚洲色图| 久久精品免费一区二区喷潮| 亚洲人成电影网站色| 免费国产成人午夜私人影视| 一级毛片在线播放免费| 亚洲AV无码专区在线播放中文| **真实毛片免费观看 | 国产亚洲精品资源在线26u| 国产永久免费高清在线| 亚洲码在线中文在线观看| 女人18毛片水真多免费看| 日韩免费在线中文字幕| 亚洲av无码专区国产乱码在线观看 | 亚洲精品国产精品乱码视色| 无码精品国产一区二区三区免费 | 久久亚洲AV成人出白浆无码国产| 免费做爰猛烈吃奶摸视频在线观看| 色偷偷噜噜噜亚洲男人| 精品国产人成亚洲区| 久草免费福利资源站| 亚洲综合av一区二区三区不卡| 国产一区二区视频免费| 男人都懂www深夜免费网站| 亚洲va精品中文字幕| 亚洲国产中文字幕在线观看 | 亚洲精品无码久久久久久久| 好爽好紧好大的免费视频国产| a级毛片高清免费视频就| 亚洲男人的天堂久久精品| 国产偷窥女洗浴在线观看亚洲|