diff --git a/LoginGui.java b/LoginGui.java new file mode 100644 index 0000000..c73a3f2 --- /dev/null +++ b/LoginGui.java @@ -0,0 +1,163 @@ +package view.gui; + +import ctrl.LoginCtrl; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * @author Nisiyu + * @version 1.0 + * @created 21-11月-2025 8:14:26 + * 学号:2023210480 姓名:你的姓名 + */ +public class LoginGui extends JFrame { + + private JTextField cid; + private JPasswordField cpwd; + private LoginCtrl loginCtrl; + private JButton submitBtn; + public LoginCtrl m_LoginCtrl; + private JLabel resultLabel; + + public LoginGui() { + this.loginCtrl = new LoginCtrl(); + initComponents(); + setupLayout(); + setupListeners(); + } + + public void finalize() throws Throwable { + // 清理资源 + } + + /** + * 初始化界面组件 + */ + public void initComponents() { + // 设置窗口属性 + setTitle("ATM登录系统 - 学号:2023210480"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(400, 300); + setLocationRelativeTo(null); // 居中显示 + + // 初始化组件 + cid = new JTextField(15); + cpwd = new JPasswordField(15); + submitBtn = new JButton("登录"); + resultLabel = new JLabel("请输入账号和密码"); + + // 设置密码字段的回显字符 + cpwd.setEchoChar('*'); + } + + /** + * 设置界面布局 + */ + private void setupLayout() { + setLayout(new GridBagLayout()); + GridBagConstraints gbc = new GridBagConstraints(); + gbc.insets = new Insets(5, 5, 5, 5); + gbc.fill = GridBagConstraints.HORIZONTAL; + + // 账号标签和输入框 + gbc.gridx = 0; + gbc.gridy = 0; + add(new JLabel("账号:"), gbc); + + gbc.gridx = 1; + gbc.gridy = 0; + add(cid, gbc); + + // 密码标签和输入框 + gbc.gridx = 0; + gbc.gridy = 1; + add(new JLabel("密码:"), gbc); + + gbc.gridx = 1; + gbc.gridy = 1; + add(cpwd, gbc); + + // 登录按钮 + gbc.gridx = 0; + gbc.gridy = 2; + gbc.gridwidth = 2; + gbc.fill = GridBagConstraints.NONE; + add(submitBtn, gbc); + + // 结果显示标签 + gbc.gridx = 0; + gbc.gridy = 3; + gbc.gridwidth = 2; + add(resultLabel, gbc); + } + + /** + * 设置事件监听器 + */ + private void setupListeners() { + submitBtn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + handleLogin(); + } + }); + + // 回车键登录 + cpwd.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + handleLogin(); + } + }); + } + + /** + * 处理登录事件 + */ + private void handleLogin() { + String account = cid.getText().trim(); + String password = new String(cpwd.getPassword()).trim(); + + if (account.isEmpty() || password.isEmpty()) { + resultLabel.setText("账号和密码不能为空!"); + resultLabel.setForeground(Color.RED); + return; + } + + // 调用控制器进行登录验证 + boolean loginSuccess = loginCtrl.validateLogin(account, password); + + if (loginSuccess) { + resultLabel.setText("登录成功!欢迎使用ATM系统"); + resultLabel.setForeground(Color.GREEN); + // 这里可以跳转到主界面 + } else { + resultLabel.setText("登录失败!请检查账号和密码"); + resultLabel.setForeground(Color.RED); + } + + // 清空密码框 + cpwd.setText(""); + } + + /** + * 显示登录界面 + */ + public void showGui() { + setVisible(true); + } + + /** + * 主方法,用于测试 + */ + public static void main(String[] args) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + new LoginGui().showGui(); + } + }); + } +}//end LoginGui \ No newline at end of file