问题遇到的现象和发生背景:
我创建一个用户登录窗体,继承了JFrame类,给“登录”按钮添加了事件, 结果这个(JOptionPane.showMessageDialog(null,"账号或密码错误,请重新输入");
)中的第一个参数输入“this”运行后报错,输入“null”运行后弹窗关不掉了。
问题相关代码
package Case;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @Description
* @Author:ZhangShuai
* @CreateTime:2022/7/4 15:31
**/
//需求:已知用户名和密码,请用程序模拟用户登录。总共给三次机会,登陆之后,给出相应的提示
/*
* <p>用户登录 用户名 输入框 密码 输入框 登录
* * <p>前端人员给定数据: 1、窗体标题:用户登录
* 2、窗体大小为400*300,其他设置与之前一样
* 3、“用户名”位置大小50,50,50,20
* “用户名”输入框 位置大小150,50,180,20
* 4、“密码”位置大小50,100,50,20 “密码”输入框 位置大小 150,100,180,20
* 5、“登录”位置大小20,200,280,20
**/
public class UserLogin extends JFrame {
//系统录入一个用户数据
String username="zhangshuai";
String password="123456";
public UserLogin(){
// 创建窗体
initJframe();
//打印组件
paintJframe();
this.setVisible(true);
}
public void initJframe(){
this.setLayout(null);
this.setAlwaysOnTop(true);
this.setTitle("用户登录");
this.setSize(400,300);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
}
public void paintJframe(){
JLabel jLabel=new JLabel("用户名");
jLabel.setBounds(50,50,50,20);
this.add(jLabel);
JLabel jLabel1=new JLabel("密码");
jLabel1.setBounds(50,100,50,20);
this.add(jLabel1);
JTextField jTextField=new JTextField();
jTextField.setBounds(150,50,180,20);
this.add(jTextField);
JTextField jTextField1=new JTextField();
jTextField1.setBounds(150,100,180,20);
this.add(jTextField1);
JButton jButton=new JButton("登录");
jButton.setBounds(20,200,280,20);
jButton.addActionListener(
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 3; i++) {
if(jTextField.getText().equals(username)&&jTextField1.getText().equals(password)){
// JOptionPane jOptionPane=new JOptionPane("登陆成功,欢迎回来");
JOptionPane.showMessageDialog(null,"登陆成功,欢迎回来");
return;
}else{
// JOptionPane jOptionPane=new JOptionPane("账号或密码错误,请重新输入");
JOptionPane.showMessageDialog(null,"账号或密码错误,请重新输入");
}
}
}
});
this.add(jButton);
}
public static void main(String[] args) {
UserLogin userLogin=new UserLogin();
}
}
我想要达到的结果:
在 JOptionPane.showMessageDialog(null,"登陆成功,欢迎回来")中设置把第一个参数写正确,满足在用户登录成功后提示“登陆成功,欢迎回来”的弹窗
@Bug 终结者