受累!进来帮忙看看,这个问题让我很郁闷!!!

zi_feng 2003-09-14 02:59:16
这是一个“登陆”窗口的事件处理。可是点击OK没反应,程序没有语法错误,运行时也没有异常。
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
//点击“确定”进入主窗口
if(okButton == source)
{
if (nameField.getText() == "maple" && pwdField.getText()== "530520")
{
mainFrame = new MainWindow();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.show();
dispose();
}

}
if(source == cancelButton)
System.exit(0);
}
...全文
61 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
swinging 2003-09-14
  • 打赏
  • 举报
回复
请参考:
回复人: sniper_bat(sniper_bat) ( ) 信誉:99 2003-09-14 11:15:00 得分:0


mainFrame.show();会使当前Frame变成独占的
如果你前面有一个Frame了,这个就出不来了


对FRAME的处理已经不是很清楚怎么做了,因为我好几年没有用它了,手头的一本SWING书不在,
建议你改进下自己的调试代码方式,
至少你可以在这里设置断点并单步跟踪来发现到底问题出在哪里,这样会更好解决,老实说,我没有心思
来调试你的程序。

另外:
nameField.getText().equals(loginSql.nameStu) && pwdField.getPassword().equals(loginSql.pwdStu))

这句可能仍然是有问题的,
这句的前提之一是nameField.getText() != null,对pwdField同理,
当然,如果你保证这2个方法不返回NULL,就算了。

我前面给出的没有NULL判断,因为我是直接拿你的STRING的:
"530520".equals(pwdField.getText())
所以不需要对"530520"判断NULL,equals方法参数是null的话是会返回false的。


zi_feng 2003-09-14
  • 打赏
  • 举报
回复
按照 “swinging(山不在高) ”做修改通过了。可是现在我连上数据库的“Login表”,点击“确定”又没反映。数据库连接没有问题。
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if(okButton.equals(source))
{
try
{
LoginSql loginSql = new LoginSql();
if (nameField.getText().equals(loginSql.nameStu) && pwdField.getPassword().equals(loginSql.pwdStu))
{
mainFrame = new MainWindow();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.show();
dispose();
}
}
catch(Exception e){}
}
sniper_bat 2003-09-14
  • 打赏
  • 举报
回复
大概
sniper_bat 2003-09-14
  • 打赏
  • 举报
回复
mainFrame.show();会使当前Frame变成独占的
如果你前面有一个Frame了,这个就出不来了
CarreraChina 2003-09-14
  • 打赏
  • 举报
回复
up
tomcatjava 2003-09-14
  • 打赏
  • 举报
回复
同意楼上的说法!
swinging 2003-09-14
  • 打赏
  • 举报
回复
把nameField.getText()和pwdField.getText()也打印出来不就知道了吗?
还有:
nameField.getText().equals(loginSql.nameStu)
pwdField.getText().equals(loginSql.pwdStu)
都打出来,
结果还不是一目了然?
zi_feng 2003-09-14
  • 打赏
  • 举报
回复
输出顺序:
why
why2
maple 530520

public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if(okButton.equals(source))
{
System.out.println("why");
try
{
System.out.println("why2");
LoginSql loginSql = new LoginSql();
System.out.println(loginSql.nameStu+loginSql.pwdStu);

if (nameField.getText().equals(loginSql.nameStu) && //看来是这的问题
pwdField.getText().equals(loginSql.pwdStu)) //可我不知道怎么解决
{
System.out.println("why3"); //这句没能显示
mainFrame = new MainWindow();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
dispose();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
if(cancelButton.equals(source))
{
System.exit(0);
}
}
nbm0 2003-09-14
  • 打赏
  • 举报
回复

不管怎么样,楼上说的定位错误的准确位置很重要!
swinging 2003-09-14
  • 打赏
  • 举报
回复
最简单的调试方法:在每个分支都放个输出语句来检验程序的逻辑,
这里可能有这样的错误:对于对象的相等判断,请使用EQUALS(OBJECT)方法,
使用等号是比较两个对象的引用,如果这两个对象是指向同一个对象的,才会相等,
所以,nameField.getText() == "maple" && pwdField.getText()== "530520",这
一句大概永远也不能返回TRUE,
你应该这样判断:
"maple".equals(nameField.getText()) && "530520".equals(pwdField.getText()),

显然,如果你点击OK,那么source == cancelButton会返回FALSE,那么当然什么反应
也没有。
swinging 2003-09-14
  • 打赏
  • 举报
回复
ft 楼主,
如果你已经经过了一些单步调试,那么应该大概知道错在哪里,不把情况说清楚怎么行,
如果没有那就单步调试找到问题,

还有,刚看了你的代码:
catch(Exception e){}
这句很危险,如果你不对异常做处理,那么TRY CATCH还有什么实在意义吗?
简单的改成:
catch(Exception e) {
e.printStackTrace();
}
看看有没有异常先。

还有,这个程序显然是很大可能是在逻辑判断是有问题,那么请先把所有逻辑结果打印出来看看是否和自己本来应该结果相同,如果不同就知道问题了。

如果你做了这些事就说出结果并说出你对程序错误的判断,没有的话,就去试,
我一开始就说了:最简单的调试方法:在每个分支都放个输出语句来检验程序的逻辑

几分钟就可以定位错误,我看只要一分钟。

最后再嘱咐你一句,不但是逻辑判断的结果是否为TRUE,连参与逻辑计算的所有值都打印出来,
gogogo
zi_feng 2003-09-14
  • 打赏
  • 举报
回复
不太明白,我觉得问题不在这。因为不做getText()处理,直接点击button进入没有问题,或不连数据库用nameField.getText() == "maple" && pwdField.getText()== "530520" 然后输入“maple”和“530520”也没有问题。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧