我正在从事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添加到那个?
答案 0 :(得分:3)
看起来你把一切都搞定了!
现在我认为你的老师意味着:处理程序应该是一个扩展{{1}的内部类的实例(而不是#34; object") } class 。
通过执行以下操作:
WindowAdapter
...您实际上正在创建new WindowAdapter() {
// Use annotations, it's useful :)
@Override
public void windowCloses(WindowEvent e) {
// ...
}
}
的新匿名类。在这个新定义中,您覆盖 extends WindowAdapter
方法,然后实例化它作为参数传递的新对象到WindowAdapter#windowCloses
。
显然,您的老师希望您实际定义内部类并创建它的新实例。我不想给你这个代码,但是你真是太神了,你马上就能搞清楚了!
答案 1 :(得分:0)
根据我的理解,这应该有所帮助:
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()
}
});