内部类中的WindowAdapter

时间:2015-11-29 19:58:56

标签: java user-interface

我正在从事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添加到那个?

2 个答案:

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