内部类的WindowAdapter

我正在从事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参数传递的新对象实例化它。

显然,您的老师希望您实际定义内部类并创建它的新实例。 我不想只是给你这个代码,但你真是太神了,你马上就能搞清楚!

据我所知,这应该有所帮助:

  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() } });