package com.msksbr.LoginFrm;

import javax.swing.*;
import java.awt.event.*;

/**
 * LoginMessangeExpection 类表示一个登录失败的对话框，用于显示错误信息。
 */
public class LoginMessangeExpection extends JDialog {
    // 对话框的内容面板
    private JPanel contentPane;
    // 确认按钮
    private JButton buttonOK;

    /**
     * 构造函数，初始化 LoginMessangeExpection 对话框。
     */
    public LoginMessangeExpection() {
        // 设置对话框的内容面板
        setContentPane(contentPane);
        // 设置对话框为模态对话框
        setModal(true);
        // 设置默认按钮为 buttonOK
        getRootPane().setDefaultButton(buttonOK);
        // 设置对话框不可调整大小
        setResizable(false);
        // 设置对话框的大小
        setSize(200, 150);

        // 设置对话框的标题
        setTitle("登录失败");

        // 为 buttonOK 添加动作监听器
        buttonOK.addActionListener(new ActionListener() {
            /**
             * 当按钮被点击时调用的方法。
             *
             * @param e 动作事件
             */
            public void actionPerformed(ActionEvent e) {
                // 调用 onOK 方法
                onOK();
                // 调用 onCancel 方法
                onCancel();
            }
        });

        // 点击 X 时调用 onCancel()
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            /**
             * 当窗口关闭事件发生时调用的方法。
             *
             * @param e 窗口事件
             */
            public void windowClosing(WindowEvent e) {
                // 调用 onCancel 方法
                onCancel();
            }
        });

        // 遇到 ESCAPE 时调用 onCancel()
        contentPane.registerKeyboardAction(new ActionListener() {
            /**
             * 当按键事件发生时调用的方法。
             *
             * @param e 动作事件
             */
            public void actionPerformed(ActionEvent e) {
                // 调用 onCancel 方法
                onCancel();
            }
        }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    }

    /**
     * 当用户点击确认按钮时调用的方法。
     */
    private void onOK() {
        // 在此处添加您的代码
        // 关闭对话框
        dispose();
    }

    /**
     * 当用户取消操作时调用的方法。
     */
    private void onCancel() {
        // 必要时在此处添加您的代码
        // 关闭对话框
        dispose();
    }
}
