Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-关闭JFrame窗口时的消息_Java_Swing_Window_Jframe - Fatal编程技术网

Java-关闭JFrame窗口时的消息

Java-关闭JFrame窗口时的消息,java,swing,window,jframe,Java,Swing,Window,Jframe,我有一个Java程序,其中包含一个继承自JFrame的类应用程序 我想显示一条消息,询问用户单击窗口右上角的X按钮是否要退出程序 这是我目前的代码: 我从网上找到的教程中得到了这段代码。我自己编写了WindowClosing事件处理程序。但是,我在注册窗口侦听器(addWindowListener)时遇到问题。它告诉我WindowAdapter是抽象的,不能实例化 我怎样才能解决这个问题呢?基本上,你的答案几乎是正确的。有几件东西拼错了,还有一个打字错误 首先删除窗口关闭方法(它是窗口,而不是窗

我有一个Java程序,其中包含一个继承自JFrame的类应用程序

我想显示一条消息,询问用户单击窗口右上角的X按钮是否要退出程序

这是我目前的代码:

我从网上找到的教程中得到了这段代码。我自己编写了WindowClosing事件处理程序。但是,我在注册窗口侦听器(addWindowListener)时遇到问题。它告诉我WindowAdapter是抽象的,不能实例化


我怎样才能解决这个问题呢?

基本上,你的答案几乎是正确的。有几件东西拼错了,还有一个打字错误

首先删除
窗口关闭
方法(它是
窗口
,而不是
窗口
) 然后更换
addWindowListener(新的WindowAdapter())使用下面的代码

addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
    int confirmed = JOptionPane.showConfirmDialog(null, 
        "Are you sure you want to exit the program?", "Exit Program Message Box",
        JOptionPane.YES_NO_OPTION);

    if (confirmed == JOptionPane.YES_OPTION) {
      dispose();
    }
  }
});
好的,再试一次

无法创建新的WindowAdapter,因为WindowAdapter是抽象的。无法实例化抽象类。您需要创建WindowAdapter的子类,并将其抽象方法实现为public


我在两分钟内就得到了这个

第一个是在Exit_on_close中设置j帧默认关闭事件。其次,创建一个名为“窗口关闭事件处理程序”的类,然后在i nit阶段调用它

private void WindowClosingEventHandler(){ addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { int confirmed = JOptionPane.showConfirmDialog(null, "Are you sure you want to exit this application?", "Exit Program Message Box",JOptionPane.YES_NO_OPTION);

    if (confirmed == JOptionPane.YES_OPTION) {
        try{
            String login=txtuserid.getText();
            Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/repair", "root", "");
            Statement st = conn.createStatement();
            String update = "UPDATE user set User_Status=0 where UserID='"+ login +"'";
            st.executeUpdate(update);  
            dispose();
            Login2 dialog = new Login2(new javax.swing.JFrame(), true);
            dialog.setVisible(true);
        }catch(SQLException | HeadlessException q){
            JOptionPane.showMessageDialog(null, q);
        }
        System.exit(0);
    }
    else{
        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
    }
}
});
}

你确定要解决这个问题吗?(TM);-)我当然想解决它;)非常感谢您的帮助:)您的解决方案非常有效:)@Matthew如果您使用Java 5(+),您可以使用
@Override
注释来显示您打算扩展超类中的方法,即
windowClosing
。您可能会因为输入错误而收到编译错误。@DuncanJones谢谢您的建议:)