java - 打开两个新的 JFrame!为什么会这样?
问题描述
此代码检查用户名和密码,如果它们正确,则打开一个新的 JFrame。但是,打开了两个相同的 JFrame,我不知道原因。
public void checkLogin(String x, String y){
if (x.equals(loginCredentials[0]) && y.equals(loginCredentials[1])){
dispose();
task1ExampleSC o2 = new task1ExampleSC();
o2.setVisible(true);
o2.setSize(600,650);
o2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}else{
System.exit(0);
}
}
private class loginAC implements ActionListener{
public void actionPerformed(ActionEvent e){
String usernameText,passwordText;
if (e.getSource()==login){
usernameText = username.getText();
passwordText = password.getText();
checkLogin(usernameText,passwordText);
}else if(e.getSource()==cancel){
System.exit(0);
}
}
}
解决方案
您没有展示如何将侦听器添加到按钮,但大概您有这样的事情:
login.addActionListener(new loginAC());
此行是否在您的代码中多次出现?或者这条线有可能不止一次运行?如果是这样,登录按钮将添加多个监听器,这意味着ActionEvent
单击登录按钮时将调度多个侦听器;如果用户名和密码都正确,那将导致打开一个以上的新窗口。
推荐阅读
- python-3.x - 即使列表 x 比 y 长,如何使 str x 列表完全匹配列表 y 中的列表?我想要与 None 配对的额外 x 值
- apache-kafka - Amazon MSK 默认配置和事务发布问题
- razor - 如何以编程方式更改文化类(调用已实现的 Switch)
- mysql - MySQL - 基于行替换字符串的一部分
- mysql - 如何在 Mysql 中使用准备语句来使用数据库
- reactjs - Webpack 5 - 导入 axios 后出现“意外令牌:punc (.)”
- azure - 在 Azure AD 中自动化身份提供者 (IdP) 发起的 SSO 的最佳方法
- php - 如何使用 PHP 和 MySql 对饼图进行分类
- node.js - 币安测试网部署错误:无法从您的助记词或私钥创建地址
- javascript - 从 Django 服务器触发 javascript 函数