一个奇怪的问题求助

zedk 2004-12-23 11:36:03
我给按钮增加了点击事件,代码如下:
void btLog_actionPerformed(ActionEvent e) {
//验证输入的用户名密码
String MyNum = txtname.getText().trim();
String pwd = new String(txtpassword.getPassword());

try {
Config.setProfileString("Config.ini", "public", "LastNum", MyNum);
}
catch (Exception ex) {
ex.printStackTrace();
}
if (MyNum.equals("") && pwd.equals("")) {
lblInfo.setText("请输入用户名和密码!");
return;
}
else {
//登陆提示
lblInfo.setText("正在连接服务器....");
btLog btlog = new btLog(MyNum,pwd);
Thread login = new Thread(btlog);
login.start();
}
this.dispose();
}

其中btlog的代码如下
//增加方法继承线程
class btLog
implements Runnable {
boolean done = false;
String MyNum;
String pwd;
public btLog(String MyNum,String pwd){
this.MyNum = MyNum;
this.pwd = pwd;
}
public void run(){
while (!done) {

//验证密码并登陆
try { //定位WSDL文件的位置
OnLineLocator log = new OnLineLocator();
//获得Web Service的引用
OnLineSoap logs = (OnLineSoap) log.getOnLineSoap();

if (logs.userLogIn(MyNum, pwd)) {

MainFrame main = new MainFrame(MyNum);
main.setVisible(true);
done = true;
}
else {
lblInfo.setText("用户号或密码错误");
}
}
catch (Exception ex) {
lblInfo.setText("网络连接失败");
ex.fillInStackTrace();
}

}
}
}
问题是为什么我的程序使用了线程,界面还是处于锁死的状态?
lblInfo.setText("正在连接服务器....");
这句没有执行。
...全文
145 点赞 收藏 9
写回复
9 条回复
zedk928 2004年12月30日
up
回复 点赞
zedk 2004年12月29日
把阻塞的代码放入run方法中
怎么阻塞?
回复 点赞
zedk 2004年12月27日
up
回复 点赞
zedk928 2004年12月24日
回复 点赞
zedk 2004年12月24日
up
回复 点赞
VickyLan 2004年12月24日
把阻塞的代码放入run方法中
回复 点赞
night__cat 2004年12月24日

回复 点赞
zedk 2004年12月23日
up
回复 点赞
zedk 2004年12月23日
还有我想让
this.dispose();
在btLog的run()里面运行,不知道该怎么改写。
当前的窗体名是frame,我写frame.dispose不行啊。
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告