java中的actionlistener对我不起作用

nnt7mjpx  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(535)

我在看一个关于如何用java构建登录系统的教程,当我重新创建它时,它就不起作用了。当我启动程序时,我可以看到所有的jlabel、jbuttons和jpasswordfield,但是当我按下reset按钮时,控制台中出现了这个错误消息

  1. in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke java.util.EventObject.getSource()" because "this.e" is null
  2. at LoginPage.actionPerformed(LoginPage.java:67)
  3. at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
  4. at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
  5. at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
  6. at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
  7. at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
  8. at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636)
  9. at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
  10. at java.desktop/java.awt.Component.processEvent(Component.java:6401)
  11. at java.desktop/java.awt.Container.processEvent(Container.java:2263)
  12. at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012)
  13. at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
  14. at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
  15. at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
  16. at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
  17. at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
  18. at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
  19. at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2764)
  20. at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
  21. at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
  22. at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
  23. at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
  24. at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
  25. at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
  26. at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
  27. at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
  28. at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
  29. at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
  30. at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
  31. at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
  32. at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
  33. at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
  34. at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
  35. at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
  36. at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
  37. at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

所以在这一点上,我认为我拼错了一些东西,所以我复制了代码的家伙,使教程,当我粘贴它,我得到了同样的信息。在这一点上,我是相当绝望,我会采取任何帮助,我可以得到。感谢任何帮助你的人。

  1. import java.awt.Font;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.util.EventObject;
  5. import java.util.HashMap;
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPasswordField;
  10. import javax.swing.JTextField;
  11. public class LoginPage implements ActionListener {
  12. JFrame frame = new JFrame();
  13. JButton loginButton = new JButton("Login");
  14. JButton resetButton = new JButton("Reset");
  15. JTextField userIDField = new JTextField();
  16. JPasswordField userPasswordField = new JPasswordField();
  17. JLabel userIDLabel = new JLabel("userID:");
  18. JLabel userPasswordLabel = new JLabel("Password:");
  19. JLabel messageLabel = new JLabel("");
  20. HashMap<String,String> logininfo = new HashMap<String,String>();
  21. private EventObject e;
  22. LoginPage(HashMap<String,String> loginInfoOriginal){
  23. logininfo = loginInfoOriginal;
  24. //Labels
  25. userIDLabel.setBounds(50, 100, 75, 25);
  26. userPasswordLabel.setBounds(50, 150, 75, 25);
  27. messageLabel.setBounds(125, 250, 250, 35);
  28. messageLabel.setFont(new Font(null,Font.ITALIC,25));
  29. //Fields
  30. userIDField.setBounds(125,100,200,25);
  31. userPasswordField.setBounds(125,150,200,25);
  32. //Buttons
  33. loginButton.setBounds(125, 200, 100, 25);
  34. loginButton.addActionListener(this);
  35. loginButton.setFocusable(false);
  36. resetButton.setBounds(225, 200, 100, 25);
  37. resetButton.setFocusable(false);
  38. resetButton.addActionListener(this);
  39. //Window
  40. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41. frame.setSize(420,420);
  42. frame.setLayout(null);
  43. frame.setVisible(true);
  44. frame.add(userIDLabel);
  45. frame.add(userPasswordLabel);
  46. frame.add(messageLabel);
  47. frame.add(userIDField);
  48. frame.add(userPasswordField);
  49. frame.add(loginButton);
  50. frame.add(resetButton);
  51. }
  52. @Override
  53. public void actionPerformed(ActionEvent arg0) {
  54. if(e.getSource()==resetButton);
  55. userIDField.setText("");
  56. userPasswordField.setText("");
  57. }
  58. }
e4yzc0pl

e4yzc0pl1#

而不是打电话 e.getSource() ,使用 arg0.getSource() .

相关问题