我正在做一个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。
WindowAdapter
通过执行以下操作:
new WindowAdapter() { // Use annotations, it's useful :) @Override public void windowCloses(WindowEvent e) { // ... } }
…您实际上是在创建一个新的 匿名* 类extends WindowAdapter。在这个新定义中,您将 覆盖WindowAdapter#windowCloses方法,然后在作为参数传递给的 新对象 中 实例化 该方法。 *addWindowListener
extends WindowAdapter
WindowAdapter#windowCloses
addWindowListener
显然,您的老师希望您实际定义一个 内部类 并为其创建一个新实例。我不想只给您提供此代码,但是您该死的很接近,您很快就会发现它!