我正在做一个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
的新对象中实例化该方法。显然,您的老师希望您实际定义一个内部类并为其创建一个新实例。我不想只为您提供此代码,但是您该死的很接近,您会立刻发现它!