小编典典

内部类WindowAdapter

java

我正在做一个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吗?


阅读 275

收藏
2020-11-30

共1个答案

小编典典

看起来您一切都正确!

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

通过执行以下操作:

new WindowAdapter() {

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

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

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

2020-11-30