import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class DormitoryManagementLogin extends JFrame implements ActionListener { private JLabel titleLabel, usernameLabel, passwordLabel; private JTextField usernameField; private JPasswordField passwordField; private JButton loginButton, resetButton; public DormitoryManagementLogin() { super("Dormitory Management Login"); setSize(400, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); titleLabel = new JLabel("Dormitory Management Login"); titleLabel.setFont(new Font("Arial", Font.BOLD, 20)); titleLabel.setForeground(Color.BLUE); titleLabel.setHorizontalAlignment(JLabel.CENTER); usernameLabel = new JLabel("Username:"); passwordLabel = new JLabel("Password:"); usernameField = new JTextField(); passwordField = new JPasswordField(); loginButton = new JButton("Login"); resetButton = new JButton("Reset"); loginButton.addActionListener(this); resetButton.addActionListener(this); JPanel panel = new JPanel(new GridLayout(3, 2)); panel.add(usernameLabel); panel.add(usernameField); panel.add(passwordLabel); panel.add(passwordField); panel.add(loginButton); panel.add(resetButton); add(titleLabel, BorderLayout.NORTH); add(panel, BorderLayout.CENTER); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == loginButton) { String username = usernameField.getText(); String password = String.valueOf(passwordField.getPassword()); // 在这里添加登录验证逻辑 JOptionPane.showMessageDialog(this, "登录成功!"); // 登录成功后跳转到宿舍管理主界面 new DormitoryManagementMain(); dispose(); } else if (e.getSource() == resetButton) { usernameField.setText(""); passwordField.setText(""); } } public static void main(String[] args) { new DormitoryManagementLogin(); }}请修改代码错误
时间: 2024-03-01 12:51:54 浏览: 18
代码中没有明显的错误,但是为了使代码更加规范和易读,可以对其中一些部分进行优化。例如:
1. 在类名后面加上 `{}`,表示该类是一个独立的代码块。
2. 将 `JFrame.EXIT_ON_CLOSE` 改为 `WindowConstants.EXIT_ON_CLOSE`,使代码更加易读。
3. 将 `setDefaultCloseOperation(EXIT_ON_CLOSE)` 改为 `setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)`。
4. 将 `String password = String.valueOf(passwordField.getPassword())` 改为 `String password = new String(passwordField.getPassword())`,因为 `String.valueOf()` 方法返回的是 char 数组的字符串表示形式,而不是密码字符串本身。
修改后的代码如下:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DormitoryManagementLogin extends JFrame implements ActionListener {
private JLabel titleLabel, usernameLabel, passwordLabel;
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton, resetButton;
public DormitoryManagementLogin() {
super("Dormitory Management Login");
titleLabel = new JLabel("Dormitory Management Login");
titleLabel.setFont(new Font("Arial", Font.BOLD, 20));
titleLabel.setForeground(Color.BLUE);
titleLabel.setHorizontalAlignment(JLabel.CENTER);
usernameLabel = new JLabel("Username:");
passwordLabel = new JLabel("Password:");
usernameField = new JTextField();
passwordField = new JPasswordField();
loginButton = new JButton("Login");
resetButton = new JButton("Reset");
loginButton.addActionListener(this);
resetButton.addActionListener(this);
JPanel panel = new JPanel(new GridLayout(3, 2));
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(loginButton);
panel.add(resetButton);
add(titleLabel, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
setSize(400, 300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == loginButton) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
// 在这里添加登录验证逻辑
JOptionPane.showMessageDialog(this, "登录成功!");
// 登录成功后跳转到宿舍管理主界面
new DormitoryManagementMain();
dispose();
} else if (e.getSource() == resetButton) {
usernameField.setText("");
passwordField.setText("");
}
}
public static void main(String[] args) {
new DormitoryManagementLogin();
}
}
```