锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍓嶅ぉ鎶?/span> SWT 鐨勫綰跨▼緇堜簬鎼炲畾錛屾湰鏉ユ兂鍐欑偣蹇冨緱錛岃嫤浜庢病鏃墮棿錛屼粖澶╁垰濂芥湁鏃墮棿錛屽氨鍐欎簡濡備笅鎷欎綔錛?/span> ^_^ 銆?/span>
1 錛庡厛鐪嬬湅 JAVA JDK 閲岀殑澶氱嚎紼嬶細(xì)
JDK 閲岀殑澶氶」紼嬮噷鏈変袱縐嶆柟寮忥細(xì) extends Thread 鍜?/span> implements Runnable 錛屽綋璋冪敤綰跨▼綾葷殑 start() 鏂規(guī)硶錛屾湰璐ㄦ槸璋冪敤 run() 錛岀嚎紼嬫墽琛屻?/span>
e.g.
package com.javathread;
public class TestThread {
聽聽聽聽聽聽 /**
聽聽聽聽聽聽 聽* @param args
聽聽聽聽聽聽 聽*/
聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽 // TODO Auto-generated method stub
聽聽聽聽聽聽聽聽聽聽聽聽聽 Thread t1 = new NewThread();// Create two new Thread
聽聽聽聽聽聽聽聽聽聽聽聽聽 t1.setName("t1");
聽聽聽聽聽聽聽聽聽聽聽聽聽 Thread t2 = new NewThread();
聽聽聽聽聽聽聽聽聽聽聽聽聽 t2.setName("t2");
聽聽聽聽聽聽聽聽聽聽聽聽聽 // new NewThread().start();//call the newThread
聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for (int i = 5; i > 0; i--) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println("main Thread " + i);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 t1.start();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 t2.start();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Thread.sleep(1000);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (InterruptedException e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // TODO Auto-generated catch block
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println("Exiting main Thread!");
聽聽聽聽聽聽 }
}
/*
聽* create a Thread class
聽*/
class NewThread extends Thread {
聽聽聽聽聽聽 public void run() {
聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println("new聽 Thread " + this.getName());
聽聽聽聽聽聽 }
} 杈撳嚭緇撴灉錛?/span>
main Thread 5
new聽 Thread t1
new聽 Thread t2
main Thread 4
main Thread 3
main Thread 2
main Thread 1
Exiting main Thread!
Implements Runnable()
package com.javathread;
public class TestThread {
聽聽聽聽聽聽 /**
聽聽聽聽聽聽 聽* @param args
聽聽聽聽聽聽 聽*/
聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽 // TODO Auto-generated method stub
聽聽聽聽聽聽聽聽聽聽聽聽聽 new NewThread("one");// Create two new Thread
聽聽聽聽聽聽聽聽聽聽聽聽聽 new NewThread("two");
聽聽聽聽聽聽聽聽聽聽聽聽聽 // new NewThread().start();//call the newThread
聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Thread.sleep(10000);
聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (InterruptedException e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // TODO Auto-generated catch block
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println("Exiting main Thread!");
聽聽聽聽聽聽 }
}
/*
聽* create a Thread class
聽*/
class NewThread implements Runnable {
聽聽聽聽聽聽 String name;
聽聽聽聽聽聽 Thread t;
聽聽聽聽聽聽 NewThread(String name) {
聽聽聽聽聽聽聽聽聽聽聽聽聽 this.name = name;
聽聽聽聽聽聽聽聽聽聽聽聽聽 t = new Thread(this, name);
聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println("New Thread " + t);
聽聽聽聽聽聽聽聽聽聽聽聽聽 t.start();
聽聽聽聽聽聽 }
聽聽聽聽聽聽 public void run() {
聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for (int i = 5; i > 0; i--) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println(name + ":" + i);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Thread.sleep(1000);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (InterruptedException e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // TODO Auto-generated catch block
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 }
}
浣嗘槸 SWT 鐨勭嚎紼嬪拰 JDK 鐨勬湁鐐瑰尯鍒?/span>
褰撳惎鍔ㄤ竴涓?/span> SWT 鐨勭嚎紼嬫椂鍊欙紝瑕佸洖榪囨潵鎿嶄綔 shell 涓婄殑鎺т歡
蹇呴』瑕佽皟鐢?/span> Display 鐨?/span> SyncExec 鍚屾鎴栬?/span> asyncExec 寮傛錛屾潵閲嶆柊鍙栧緱 shell
涓句釜渚嬪瓙
濡備笅錛?/span>
鎴戜滑鏂板緩 SWT Application 錛屽姞涓涓?/span> button 鍚姩鍙︿竴涓嚎紼嬶紝
浠g爜濡備笅鎵紺猴細(xì)
package com;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test {
聽聽聽聽聽聽 private static Display display = Display.getDefault();
聽聽聽聽聽聽 private static Shell shell = new Shell();
聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽 Test test = new Test();
聽聽聽聽聽聽聽聽聽聽聽聽聽 test.open();
聽聽聽聽聽聽聽聽聽聽聽聽聽 // final Shell shell = new Shell();
聽聽聽聽聽聽 }
聽聽聽聽聽聽 public void open() {
聽聽聽聽聽聽聽聽聽聽聽聽聽 shell.setSize(500, 375);
聽聽聽聽聽聽聽聽聽聽聽聽聽 shell.setText("SWT Application");
聽聽聽聽聽聽聽聽聽聽聽聽聽 shell.open();
聽聽聽聽聽聽聽聽聽聽聽聽聽 final Button startnewthreadButton = new Button(shell, SWT.NONE);
聽聽聽聽聽聽聽聽聽聽聽聽聽 startnewthreadButton.addSelectionListener(new SelectionAdapter() {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 public void widgetSelected(SelectionEvent e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 new TestThread().start();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 });
聽聽聽聽聽聽聽聽聽聽聽聽聽 startnewthreadButton.setText("startnewthread");
聽聽聽聽聽聽聽聽聽聽聽聽聽 startnewthreadButton.setBounds(135, 116, 90, 25);
聽聽聽聽聽聽聽聽聽聽聽聽聽 shell.layout();
聽聽聽聽聽聽聽聽聽聽聽聽聽 while (!shell.isDisposed()) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (!display.readAndDispatch())
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 display.sleep();
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 }
聽聽聽聽聽聽 /*
聽聽聽聽聽聽 聽* create a new Thread class
聽聽聽聽聽聽 聽*/
聽聽聽聽聽聽 private class TestThread extends Thread {
聽聽聽聽聽聽聽聽聽聽聽聽聽 public void run() {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /*
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽* call Swt controls must use Dispaly.syncExec or Display.asyncExec
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽*/
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (!Test.display.isDisposed()) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Test.display.syncExec(new Runnable() {// 榪欐浠g爜寰堥噸瑕?/span>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
public void run() {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 MessageDialog.openInformation(null, "fd", "fd");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 });
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 }
}
濡傛灉涓嶅姞鍔犵孩榪欐浠g爜 鐩存帴 MessageDialog.openInformation(null,鈥漟d鈥?鈥漟d鈥?;
紼嬪簭浼?xì)鎶涘嚭寮傚父锛?xì)
ja
va.lang.ExceptionInInitializerError
濂戒簡
鏈夐棶棰?/span>
鑱旂郴
edsionchen002@163.com
QQ 4384919
聽