已有101人关注
从入门到精通 酒店管理系统运行错误
发表在Java图书答疑 2015-02-12
是否精华
版块置顶:
从入门到精通第21章酒店管理系统运行登录界面出现Bug,
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.mwq.frame.LandFrame$LandButtonActionListener.actionPerformed(LandFrame.java:224)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
分享到:
精彩评论 6
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-02-13
沙发
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
uknow
学分:0 LV1
TA的每日心情
每天一小时
2020-03-18 20:17:28
2015-02-13
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
[/FIELDSET]

回复:从数据库查到登录名对应的密码了,可以登录。但是在登录名与密码不一致时候并没有弹出显示密码错误的对话框,反而是程序死机了,只能强制关闭。此外还有一个问题,我在用户管理界面添加了新用户,但是重新登录系统默认用户还是原先的,我添加的新用户不见了,求解~~
  
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-02-14
地板
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
[/FIELDSET]

回复:从数据库查到登录名对应的密码了,可以登录。但是在登录名与密码不一致时候并没有弹出显示密码错误的对话框,反而是程序死机了,只能强制关闭。此外还有一个问题,我在用户管理界面添加了新用户,但是重新登录系统默认用户还是原先的,我添加的新用户不见了,求解~~
  
[/FIELDSET]

回复:
  这是由于程序设计缺陷造成的:
1.首先我们要修改一下tb_user表主键递增功能。打开sql server的界面工具,选中db_DrinkeryManage1-表-dbo.tb_user,然后在右侧摘要里选择列-id,右键“修改”,在列属性中“标识规范”中选择“是”。这样就完整了用户账号表主键递增功能。重新注册后,就可以在登陆窗口正确显示用户名了。
2.登陆窗口默认的密码实际上是6个空格,只不过显示成了密码符号,如果不输入的情况下,直接点登陆,密码肯定是错误的。
3.窗口没有反应了,其实不是程序死掉了,而是弹出的窗口被原窗口挡住了,我们点不到对话框,就无法继续操作原有的窗口。我们可以将原有窗口显示的优先级调成最低,让主窗口永远在底层显示,在com.mwq.frame.LandFrame的构造方法中添加这样一句就可以了:
this.setAlwaysOntop(false);
uknow
学分:0 LV1
TA的每日心情
每天一小时
2020-03-18 20:17:28
2015-02-14
4L
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
[/FIELDSET]

回复:从数据库查到登录名对应的密码了,可以登录。但是在登录名与密码不一致时候并没有弹出显示密码错误的对话框,反而是程序死机了,只能强制关闭。此外还有一个问题,我在用户管理界面添加了新用户,但是重新登录系统默认用户还是原先的,我添加的新用户不见了,求解~~
  
[/FIELDSET]

回复:
  这是由于程序设计缺陷造成的:
1.首先我们要修改一下tb_user表主键递增功能。打开sql server的界面工具,选中db_DrinkeryManage1-表-dbo.tb_user,然后在右侧摘要里选择列-id,右键“修改”,在列属性中“标识规范”中选择“是”。这样就完整了用户账号表主键递增功能。重新注册后,就可以在登陆窗口正确显示用户名了。
2.登陆窗口默认的密码实际上是6个空格,只不过显示成了密码符号,如果不输入的情况下,直接点登陆,密码肯定是错误的。
3.窗口没有反应了,其实不是程序死掉了,而是弹出的窗口被原窗口挡住了,我们点不到对话框,就无法继续操作原有的窗口。我们可以将原有窗口显示的优先级调成最低,让主窗口永远在底层显示,在com.mwq.frame.LandFrame的构造方法中添加这样一句就可以了:
this.setAlwaysOntop(false);
[/FIELDSET]

回复:非常感谢  问题已经解决了。但是还发现了一处问题,在主界面中间商品选择处,通过助记码选择没有问题但通过编号则选择不成功,输入编号并不能出现对应的商品
  
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-02-15
5L
[FIELDSET][LEGEND]引自:4楼[/LEGEND]
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
[/FIELDSET]

回复:从数据库查到登录名对应的密码了,可以登录。但是在登录名与密码不一致时候并没有弹出显示密码错误的对话框,反而是程序死机了,只能强制关闭。此外还有一个问题,我在用户管理界面添加了新用户,但是重新登录系统默认用户还是原先的,我添加的新用户不见了,求解~~
  
[/FIELDSET]

回复:
  这是由于程序设计缺陷造成的:
1.首先我们要修改一下tb_user表主键递增功能。打开sql server的界面工具,选中db_DrinkeryManage1-表-dbo.tb_user,然后在右侧摘要里选择列-id,右键“修改”,在列属性中“标识规范”中选择“是”。这样就完整了用户账号表主键递增功能。重新注册后,就可以在登陆窗口正确显示用户名了。
2.登陆窗口默认的密码实际上是6个空格,只不过显示成了密码符号,如果不输入的情况下,直接点登陆,密码肯定是错误的。
3.窗口没有反应了,其实不是程序死掉了,而是弹出的窗口被原窗口挡住了,我们点不到对话框,就无法继续操作原有的窗口。我们可以将原有窗口显示的优先级调成最低,让主窗口永远在底层显示,在com.mwq.frame.LandFrame的构造方法中添加这样一句就可以了:
this.setAlwaysOntop(false);
[/FIELDSET]

回复:非常感谢  问题已经解决了。但是还发现了一处问题,在主界面中间商品选择处,通过助记码选择没有问题但通过编号则选择不成功,输入编号并不能出现对应的商品
  
[/FIELDSET]

回复:
  我试了一下,没模拟出你反馈的问题。商品编号都比较长,容易打错,你可以对照
select * from tb_menu
中的num列输入编号。
uknow
学分:0 LV1
TA的每日心情
每天一小时
2020-03-18 20:17:28
2015-02-17
6L
[FIELDSET][LEGEND]引自:5楼[/LEGEND]
[FIELDSET][LEGEND]引自:4楼[/LEGEND]
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个异常是获取用户密码时抛出的。根据登陆的用户名,获取对应的密码,并对用户输入的密码进行比对这么一个过程。在这个过程中,用户输入的用户名在数据库中没有找到,返回了一个null的用户记录,当使用这个用户记录进行操作的时候,比如调用toString()方法,就会抛出此异常。
解决方法1:
输入数据库中注册过的用户,可以用select * from tb_user;查询所有用户记录。

解决方法2:
在com.mwq.frame.LandFrame的第224行添加校验代码
if(user == null){
   JOptionPane.showMessageDialog(null,"无此账户","友情提示",JOptionPane.INFORMATION_MESSAGE);
   resertUserNameAndPassword();
}
[/FIELDSET]

回复:从数据库查到登录名对应的密码了,可以登录。但是在登录名与密码不一致时候并没有弹出显示密码错误的对话框,反而是程序死机了,只能强制关闭。此外还有一个问题,我在用户管理界面添加了新用户,但是重新登录系统默认用户还是原先的,我添加的新用户不见了,求解~~
  
[/FIELDSET]

回复:
  这是由于程序设计缺陷造成的:
1.首先我们要修改一下tb_user表主键递增功能。打开sql server的界面工具,选中db_DrinkeryManage1-表-dbo.tb_user,然后在右侧摘要里选择列-id,右键“修改”,在列属性中“标识规范”中选择“是”。这样就完整了用户账号表主键递增功能。重新注册后,就可以在登陆窗口正确显示用户名了。
2.登陆窗口默认的密码实际上是6个空格,只不过显示成了密码符号,如果不输入的情况下,直接点登陆,密码肯定是错误的。
3.窗口没有反应了,其实不是程序死掉了,而是弹出的窗口被原窗口挡住了,我们点不到对话框,就无法继续操作原有的窗口。我们可以将原有窗口显示的优先级调成最低,让主窗口永远在底层显示,在com.mwq.frame.LandFrame的构造方法中添加这样一句就可以了:
this.setAlwaysOntop(false);
[/FIELDSET]

回复:非常感谢  问题已经解决了。但是还发现了一处问题,在主界面中间商品选择处,通过助记码选择没有问题但通过编号则选择不成功,输入编号并不能出现对应的商品
  
[/FIELDSET]

回复:
  我试了一下,没模拟出你反馈的问题。商品编号都比较长,容易打错,你可以对照
select * from tb_menu
中的num列输入编号。
[/FIELDSET]

回复:按照你说的方法重新输入编号进行查询,运行结果正常,之前是我输入的编号发生错误了,还以为编号就是序号1、2、3···
谢谢你的耐心讲解!
  
首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照