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

当GUI窗口关闭时,我需要做一些事情,目前,我已将其编写为一种简单的方法,并且可以正常工作,但是作业说“处理程序应该是扩展WindowAdapter类的内部类的对象”。我对内部类和扩展有基本的了解,但是这需要成为一个对象吗?我糊涂了。

目前,我只是将此作为GUI类的一部分,并且运行良好,我知道需求会要求一些不同的东西,但我不知道该怎么做:

addWindowListener (new WindowAdapter()
{
    public void windowCloses(WindowEvent e)
    {
           try
           {
                //Code logic
           }
           catch (Exception ex)
           {
             //Error print
             e.getWindow().dispose();
           }
    }


正如我所说,每个人现在都工作正常,但是我认为这不是必需的。我会问我的教授,但我不认为他会在截止日期之前及时找我。

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

谢谢!

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

class innerClass extends WindowAdapter {

      public void windowClosing(WindowEvent e){

           //Same logic as above
      }
}


我想我知道了。因此,现在我创建此类的一个实例,并向其中添加windowListener吗?

最佳答案

看起来您一切都正确!

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

通过执行以下操作:

new WindowAdapter() {

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


...您实际上是在创建一个新的extends WindowAdapter匿名类。在此新定义中,您将覆盖WindowAdapter#windowCloses方法,然后在作为参数传递给addWindowListener的新对象中实例化该方法。

显然,您的老师希望您实际定义一个内部类并为其创建一个新实例。我不想只为您提供此代码,但是您该死的很接近,您会立刻发现它!

10-06 14:54