最近在用Java做毕设,用SWT做界面,但是出现异常,不知是什么原因,还望高手指点一二:源代码import java.io.BufferedReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;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;
import org.eclipse.swt.widgets.Text;
public class Serves extends Shell { private Text text2;
private Text text1;
ServerSocket serverSocket;
BufferedReader sIn;
PrintWriter sOut;
/**
 * Launch the application
 * @param args
 */
public static void main(String args[]) {
try {
Display display = Display.getDefault();
Serves shell = new Serves(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
shell.begin();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}


} catch (Exception e) {
e.printStackTrace();
}
}


    public void begin(){
     try{

serverSocket=new ServerSocket(8000,10);
      text1.append("服务器启动     ");
        Socket connected=serverSocket.accept(); 
InetAddress clientAddress=connected.getInetAddress();
    text1.append("ip地址为"+clientAddress.toString()+"     ");     
    sOut=new PrintWriter(connected.getOutputStream());
    sOut.println("欢迎链接到服务器!!     ");
    sOut.flush();
    Recieve recieve=new Recieve(connected,text1);
Thread t=new Thread(recieve);
t.start();

}
catch(Exception e){e.printStackTrace();}
    }

public Serves(Display display, int style) {
super(display, style);
createContents();

} /**
 * Create contents of the window
 */
protected void createContents() {
setText("服务器端窗口");
setSize(500, 375); text1 = new Text(this, SWT.BORDER);
text1.setBounds(0, 0, 492, 133); text2 = new Text(this, SWT.BORDER);
text2.setBounds(0, 170, 492, 96); final Button button = new Button(this, SWT.NONE);
button.setText("发送");
button.setBounds(222, 298, 44, 23);
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
try{
sOut.println(text2.getText());
text1.append(text2.getText());
text2.setText("");
sOut.flush();
}
catch(Exception ee){ee.printStackTrace();}
}
});
//
} @Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;import org.eclipse.swt.widgets.Text;
public class Recieve extends Thread{
BufferedReader sIn;
String s;
// Socket socket1;
Text textArea1;
public Recieve(Socket socket,Text textArea){
try {
// socket1=socket;
sIn=new BufferedReader(new InputStreamReader(socket.getInputStream()));
textArea1=textArea;

} catch (IOException e) {
e.printStackTrace();
}

}
   public void run(){
try {
while(true)
{
   
   s=sIn.readLine();
   textArea1.append(s+"\n");
}
} catch (IOException e) {

e.printStackTrace();
}
   }
}运行异常:
Exception in thread "Thread-1" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.SWT.error(SWT.java:3666)
at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
at org.eclipse.swt.widgets.Text.append(Text.java:315)
at Recieve.run(Recieve.java:32)
at java.lang.Thread.run(Unknown Source)还望高手指点,小弟不胜感激!!