import java.awt.Frame;
import java.awt.event.*;public class $2121_Key {
class $2121_Window extends Frame{
$2121_Window(){
this.setBounds(100, 100, 100, 100);
this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==e.VK_KP_DOWN){
//我想在这里实现窗口的关闭,怎么写?
//因为是内部类
//不能用System.exit(0);
}
}
});
this.setVisible(true);
}
}
}

解决方案 »

  1.   

    if(e.getKeyCode()==e.VK_KP_DOWN){
    //调用Frame的方法
        dispose();
        setVisible(false);
    }
      

  2.   

    你还可以给$2121_Key 另写一个方法,这个方法里掉什么都可以,因为他属于$2121_Key 这样的话你就可以在内部类里掉这个方法了!
      

  3.   

    这样写是可以的
    但是我不明白为什么这个地方能直接写方法!~这是在内部类的内部啊
    这个时候对象怎么能时frame?
    this.这个时候肯定指的是KeyEvent对象。
    不解!~~~~大侠,能解释下吗?
      

  4.   


    package csdn;import java.awt.Frame;
    import java.awt.event.*;public class $2121_Key {
    class $2121_Window extends Frame {
    $2121_Window() {
    this.setBounds(100, 100, 100, 100);
    this.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == e.VK_KP_DOWN) {
    closeWin();//调用closeWin();
    }
    }
    });
    this.setVisible(true);
    }
    } private void closeWin() {
    // 这里实现窗口的关闭
    }
    }
      

  5.   

    你说的是this.setVisible(true);的this吗
    这个this是指你的$2121_Window 不是KeyEvent.但是我不明白为什么这个地方能直接写方法!~这是在内部类的内部啊   >>>不知道怎么回答你这个问题
      

  6.   

    $2121_Window是$2121_Key的内部类
    new KeyAdapter() {...}是$2121_Window的匿名内部类,
    这个匿名的内部类继承了抽象KeyAdapter,并重写了keyPressed方法
    具体可查API