改进以下代码,让错误出现三次弹出冻结信息并关闭窗体。denglu.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int count = 0; String inputzh = zhanghu.getText(); boolean bl = true; try { new Mysql(); bl = Mysql.jujle(inputzh); } catch (ClassNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (SQLException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } System.out.println(bl); if (bl) { try { System.out.println(inputzh); new GUI2(inputzh); jf.dispose(); } catch (Exception e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } else { ImageIcon titleIcon = new ImageIcon("F:\\ATM.png"); JDialog jDialog = new JDialog(jf, "错误", true); jDialog.setSize(400, 200); jDialog.setLocation(575, 400); JTextField jTextField = new JTextField("您的账号和密码输入有误!请重新输入。"); jTextField.setHorizontalAlignment(JTextField.CENTER); jTextField.setEditable(false); jTextField.setSelectedTextColor(Color.black); jDialog.add(jTextField); jDialog.setIconImage(titleIcon.getImage()); jTextField.setVisible(true); jDialog.setVisible(true); count++; if (count == 3) { ImageIcon titleIcon1 = new ImageIcon("F:\\ATM.png"); JDialog jDialog1 = new JDialog(jf, "错误", true); jDialog.setSize(400, 200); jDialog.setLocation(575, 400); JTextField jTextField1 = new JTextField("您的账号已冻结!请联系人工处理。"); jTextField.setHorizontalAlignment(JTextField.CENTER); jTextField.setEditable(false); jTextField.setSelectedTextColor(Color.black); jDialog.add(jTextField1); jDialog.setIconImage(titleIcon1.getImage()); jTextField.setVisible(true); jDialog.setVisible(true); jf.setDefaultCloseOperation(3); System.exit(0); } else { jpl.repaint(); } } } });
时间: 2024-01-19 10:02:55 浏览: 93
改进后的代码如下:
```java
denglu.addActionListener(new ActionListener() {
private int count = 0;
@Override
public void actionPerformed(ActionEvent e) {
String inputzh = zhanghu.getText();
boolean bl = true;
try {
new Mysql();
bl = Mysql.jujle(inputzh);
} catch (ClassNotFoundException | SQLException e1) {
e1.printStackTrace();
}
if (bl) {
try {
new GUI2(inputzh);
jf.dispose();
} catch (Exception e1) {
e1.printStackTrace();
}
} else {
count++;
if (count == 3) {
ImageIcon titleIcon = new ImageIcon("F:\\ATM.png");
JDialog jDialog = new JDialog(jf, "错误", true);
jDialog.setSize(400, 200);
jDialog.setLocation(575, 400);
JTextField jTextField = new JTextField("您的账号已冻结!请联系人工处理。");
jTextField.setHorizontalAlignment(JTextField.CENTER);
jTextField.setEditable(false);
jTextField.setSelectedTextColor(Color.black);
jDialog.add(jTextField);
jDialog.setIconImage(titleIcon.getImage());
jTextField.setVisible(true);
jDialog.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} else {
ImageIcon titleIcon = new ImageIcon("F:\\ATM.png");
JDialog jDialog = new JDialog(jf, "错误", true);
jDialog.setSize(400, 200);
jDialog.setLocation(575, 400);
JTextField jTextField = new JTextField("您的账号和密码输入有误!请重新输入。");
jTextField.setHorizontalAlignment(JTextField.CENTER);
jTextField.setEditable(false);
jTextField.setSelectedTextColor(Color.black);
jDialog.add(jTextField);
jDialog.setIconImage(titleIcon.getImage());
jTextField.setVisible(true);
jDialog.setVisible(true);
jpl.repaint();
}
}
}
});
```
主要的改进点是:
1. 将 `count` 变量声明为 `ActionListener` 的私有成员变量,这样每次点击按钮时都可以访问到它。
2. 在密码输入错误时,先判断 `count` 是否等于 3,如果是则弹出提示信息并关闭窗体;如果不是,则弹出错误信息并让用户重新输入。
3. 在密码输入正确时,直接打开新窗口,无需增加冻结计数器。
阅读全文