java - mouseClicked 事件的异常
问题描述
当凭证被传递给它时,这个程序会调用另一个类。问题是当调用另一个类的 JFrame (setVisible = 1) 时,线程中发生了异常。
程序:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Login window = new Login();
window.frmLogin.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Login() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
public void initialize() {
frmLogin = new JFrame();
frmLogin.setTitle("Login");
frmLogin.setSize(500,300);
frmLogin.setResizable(false);
frmLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmLogin.getContentPane().setLayout(null);
user = new JTextField();
user.setBounds(204, 90, 86, 20);
frmLogin.getContentPane().add(user);
user.setColumns(10);
JLabel lblUsername = new JLabel("Username:");
lblUsername.setBounds(113, 90, 81, 20);
frmLogin.getContentPane().add(lblUsername);
JLabel lblPassword = new JLabel("Password:");
lblPassword.setBounds(113, 138, 81, 20);
frmLogin.getContentPane().add(lblPassword);
login = new JButton("Login");
login.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
String b = new String(pass.getPassword());
AdDAuthenticator adAuthenticator = new AdDAuthenticator();
Map<String,Object> attrs = adAuthenticator.authenticate(user.getText(), b);
if (attrs != null) {
for (String attrKey : attrs.keySet()) {
if (attrs.get(attrKey) instanceof String) {
System.out.println(attrKey +": "+attrs.get(attrKey));
} else {
System.out.println(attrKey +": (Multiple Values)");
for (Object o : (HashSet<?>)attrs.get(attrKey)) {
System.out.println("\t value: " +o);
}
}
}
updateScreen upd = new updateScreen();
frmLogin.dispose();
upd.frm.setVisible(true); //exception gets called.
} else {
System.out.println("Attributes are null!");
System.out.println(b);
System.out.println(user.getText());
JOptionPane.showMessageDialog(null, "Credentials are Incorrect", "Error" , JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
});
login.setBounds(165, 195, 89, 23);
frmLogin.getContentPane().add(login);
pass = new JPasswordField();
pass.setBounds(204, 138, 86, 20);
frmLogin.getContentPane().add(pass);
lbljmawirelesscom = new JLabel("@.com");
lbljmawirelesscom.setBounds(300, 92, 110, 17);
frmLogin.getContentPane().add(#####);
}
}
例外情况如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Login$2.mouseClicked(Login.java:104)
at java.awt.AWTEventMulticaster.mouseClicked(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$500(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$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.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$JavaSecurityAccessImpl.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)
at java.awt.EventDispatchThread.run(Unknown Source)
我不确定为什么会发生这种情况,也不确定如何处理异常。如果您需要更多信息,请告诉我。
解决方案
推荐阅读
- postgresql - PostgreSQL 10 函数创建不起作用
- javascript - 将对象的键值对添加到另一个对象中
- arrays - 在数组聚合MongoDB中设置索引范围
- spring-boot - spring-boot application.properties 未被覆盖
- python - scipy.optimize 可以最小化复杂变量的函数吗?如何最小化?
- javascript - ng-options 使用 AngularJS V1.5 隐藏空白值
- java - 复制到类文件中的 IBM Java V9 静态字段引用
- css - 背景附件:固定;不能在 Firefox 中工作
- c - 没有初始化、条件、增量的循环
- openid-connect - 将自定义 OpenID Connect 声明映射到联系人属性