Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 内部类中的WindowAdapter_Java_User Interface - Fatal编程技术网

Java 内部类中的WindowAdapter

Java 内部类中的WindowAdapter,java,user-interface,Java,User Interface,我正在做一个Java学校的作业,我以为我已经完成了所有的任务,但后来又重新检查了需求,意识到我忽略了一个特定的需求,现在我需要重写一段代码,但我不明白这些需求要求我做什么 当GUI窗口关闭时,我需要一些事情发生,目前我将它作为一个简单的方法编写,它工作正常,但分配是说“处理程序应该是扩展WindowAdapter类的内部类的对象。”我已经对内部类和扩展有了基本的了解,但这句话需要成为一个对象吗?我很困惑 目前,我只是将其作为GUI类的一部分,它运行良好,我知道要求有所不同,但我不知道如何做到:

我正在做一个Java学校的作业,我以为我已经完成了所有的任务,但后来又重新检查了需求,意识到我忽略了一个特定的需求,现在我需要重写一段代码,但我不明白这些需求要求我做什么

当GUI窗口关闭时,我需要一些事情发生,目前我将它作为一个简单的方法编写,它工作正常,但分配是说“处理程序应该是扩展WindowAdapter类的内部类的对象。”我已经对内部类和扩展有了基本的了解,但这句话需要成为一个对象吗?我很困惑

目前,我只是将其作为GUI类的一部分,它运行良好,我知道要求有所不同,但我不知道如何做到:

addWindowListener (new WindowAdapter()
{
    public void windowCloses(WindowEvent e)
    {
           try
           {
                //Code logic
           }
           catch (Exception ex)
           {
             //Error print
             e.getWindow().dispose();
           }
    }
正如我所说,现在每个人都工作得很好,但我不认为这是必要的。我会问我的教授,但我认为他不会在最后期限前及时回复我

如何重写此代码以满足要求?”

谢谢

编辑:根据我到目前为止收到的信息添加此内容(谢谢!)


我想我明白了。现在我创建了这个类的一个实例,并将windowListener添加到其中

据我所知,这将有助于:

 addWindowListener(new WindowAdapter() {
      public void windowCloses(WindowEvent e) {
        try{
            int confirmed = JOptionPane.showConfirmDialog(null, 
            "This is my handler. Shall I Exit?", "Exit Message Box, JOptionPane.YES_NO_OPTION);
            if (confirmed == JOptionPane.YES_OPTION) {                                        
              dispose();
            }
         }
      catch(Exception ex){
          //Error print
        e.getWindow.dispose()
      }
    });

看来你一切都对了

现在我假设您的老师的意思是:处理程序应该是扩展
WindowAdapter
类的内部类的实例(而不是“对象”)

通过执行以下操作:

new WindowAdapter() {

    // Use annotations, it's useful :)
    @Override
    public void windowCloses(WindowEvent e) {
        // ...
    }
}
。。。实际上,您正在创建一个新的匿名类
扩展WindowAdapter
。在这个新定义中,您覆盖
WindowAdapter\windowCloses
方法,然后新对象中实例化它,并将其作为参数传递给
addWindowListener


显然,您的老师希望您实际定义一个内部类,并创建一个新的实例。我不想给你这个的密码,但是你离我很近,你马上就会明白的

请快速查看我下面的答案,并阅读有关内部类的基本示例,我相信您在相应地调整代码方面不会有问题。如果需要的话,请不要犹豫要求精度!别忘了投票支持@ccjmne的答案,如果它回答了你的问题,也许会接受它。很好。哇,谢谢@HovercraftFullOfEels,这对我来说意味着很多来自你!用这种方式编写的代码,我应该把windowListener放在哪里?我想我理解得更好了,它不完全清楚,但我编辑了原稿,添加了我所做的。谢谢是的,我刚读了你最新的问题!它很完美(除了约定所有类名都以大写开头),你明白了!现在您可以使用
addWindowListener(新的InnerClass())
:)谢谢!这封小写的信只是我在赶时间,我尽可能地遵循传统惯例。谢谢你的输入,但看起来你可能误解了。我不需要帮助编写代码逻辑,我省略了它,因为它一切正常。我实际上是在寻求一种将代码作为内部类重写的方法,但我对整个过程感到相当困惑。
new WindowAdapter() {

    // Use annotations, it's useful :)
    @Override
    public void windowCloses(WindowEvent e) {
        // ...
    }
}