package com.hezhiye;import java.sql.ResultSet;
import java.sql.SQLException;import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;public class Login { private Display display = null;
private Shell shell = null;
private Label labelHeaderInfo = null;
private Label labelUser = null;
private Label labelPasswd = null;
private Label labelTips = null;
private Text textUser = null;
private Text textPasswd = null;
private Button buttonSubmit = null;
private Button buttonReset = null;
private MessageBox mbError = null;

public Login(){

display = new Display();
int x = display.getClientArea().width/2;
int y = display.getClientArea().height/2;
shell = new Shell(display, SWT.TITLE|SWT.CLOSE);
shell.setText("***管理系统");
shell.setLocation(x-150, y-80);

GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.marginWidth = 30;
gridLayout.marginHeight = 50;
gridLayout.horizontalSpacing = 5;
gridLayout.verticalSpacing = 10;
gridLayout.makeColumnsEqualWidth = true;
shell.setLayout(gridLayout);

GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 3;
gridData.horizontalAlignment = GridData.CENTER;
labelHeaderInfo = new Label(shell,SWT.CENTER);
labelHeaderInfo.setText("***管理系统");
labelHeaderInfo.setFont(new Font(null,"",15, SWT.NORMAL));
labelHeaderInfo.setLayoutData(gridData);

labelUser = new Label(shell,SWT.NONE);
labelUser.setText("用户名:");
labelUser.setFont(new Font(null,"",12, SWT.NORMAL));
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
gridData.heightHint = 20;
gridData.horizontalAlignment = GridData.FILL;
textUser = new Text(shell, SWT.NONE);
textUser.setFont(new Font(null,"",12, SWT.NORMAL));
textUser.setLayoutData(gridData);

labelPasswd = new Label(shell,SWT.NONE);
labelPasswd.setText("密  码:");
labelPasswd.setFont(new Font(null,"",12, SWT.NORMAL));
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
gridData.heightHint = 20;
gridData.horizontalAlignment = GridData.FILL;
textPasswd = new Text(shell,SWT.PASSWORD);
textPasswd.setFont(new Font(null,"",12, SWT.NORMAL));
textPasswd.setLayoutData(gridData);

labelTips = new Label(shell,SWT.NONE);
labelTips.setText("");
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 1;
gridData.heightHint = 20;
gridData.horizontalAlignment = GridData.FILL;
buttonSubmit = new Button(shell,SWT.NONE);
buttonSubmit.setText("确定");
buttonSubmit.setFont(new Font(null,"",11, SWT.NORMAL));
buttonSubmit.setLayoutData(gridData);
buttonReset = new Button(shell,SWT.NONE);
buttonReset.setText("重置");
buttonReset.setFont(new Font(null,"",11, SWT.NORMAL));
buttonReset.setLayoutData(gridData);

shell.pack();
shell.open();

buttonSubmit.addSelectionListener(new Submit());
buttonReset.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
textUser.setText("");
textPasswd.setText("");
}
});

while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new Login();
} class Submit extends SelectionAdapter{
public void widgetSelected(SelectionEvent e){
mbError = new MessageBox(shell,SWT.NONE);
if(textUser.getText().trim() == "" && textPasswd.getText().trim() != ""){
mbError.setMessage("用户名不能为空!!");
mbError.open();
}else if(textUser.getText().trim() != "" && textPasswd.getText().trim() == ""){
mbError.setMessage("密码不能为空!!");
mbError.open();
}else if(textUser.getText().trim() == "" && textPasswd.getText().trim() == ""){
mbError.setMessage("用户名和密码不能为空!!");
mbError.open();
}else{
String sql = "select * from admin where adminname='"+ textUser.getText().trim()+"'" 
+ "and" +" adminpasswd='" + textPasswd.getText().trim()+"'";
DatabaseConn conn = new DatabaseConn();

try {
ResultSet rs = conn.getRs(sql);
if(rs.next()){
!                                              System.out.println("成功");
! new MainInterface();
}else{
mbError.setMessage("用户名和密码错误!!");
mbError.open();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} }
}
}
}一个简单的登陆窗口,输入正确的用户名后
Exception in thread "main" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3884)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at org.eclipse.swt.SWT.error(SWT.java:3770)
at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:721)
at org.eclipse.swt.widgets.Display.create(Display.java:783)
at org.eclipse.swt.graphics.Device.<init>(Device.java:135)
at org.eclipse.swt.widgets.Display.<init>(Display.java:454)
at org.eclipse.swt.widgets.Display.<init>(Display.java:445)
at com.hezhiye.MainInterface.<init>(MainInterface.java:14)
at com.hezhiye.Login$Submit.widgetSelected(Login.java:142)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3880)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473)
at com.hezhiye.Login.<init>(Login.java:110)
at com.hezhiye.Login.main(Login.java:119)
如下异常。不能转到new MainInterface()主界面;!号标记的地方。 System.out.println("成功");能正确输出。