【问题标题】:KeyListener in Java is abstract; cannot be instantiated?Java 中的 KeyListener 是抽象的;不能实例化?
【发布时间】:2010-09-22 03:28:13
【问题描述】:

我正在尝试在 java 中创建一个 Key Listener,但是当我尝试时

KeyListener listener = new KeyListener();

Netbeans 告诉我 KeyListener 是抽象的;无法实例化。我知道我缺少这个关键监听器的其他部分,但由于这是我第一次使用关键监听器,我不确定我还需要什么。为什么要告诉我这个?

谢谢,

托梅克

【问题讨论】:

    标签: java instantiation keylistener


    【解决方案1】:

    KeyListener 是一个接口 - 它必须由某些东西实现。所以你可以这样做:

    KeyListener listener = new SomeKeyListenerImplementation();
    

    但是你不能直接实例化它。您可以使用匿名内部类:

    KeyListener listener = new KeyListener()
    {
        public void keyPressed(KeyEvent e) { /* ... */ }
    
        public void keyReleased(KeyEvent e) { /* ... */ }
    
        public void keyTyped(KeyEvent e) { /* ... */ }
    };
    

    基本上,这取决于你想做什么。

    【讨论】:

      【解决方案2】:

      KeyListener 是一个接口,所以你必须编写一个实现它的类才能使用它。正如 Jon 建议的那样,您可以创建一个内联实现它的匿名类,但是有一个名为 KeyAdapter 的类是一个实现 KeyListener 的抽象类,每个接口方法都有空方法。如果您将 KeyAdapter 子类化,那么您只需要覆盖您关心的那些方法,而不是每个方法。因此,如果你只关心 keyPressed,你可以这样做

      KeyListener listener = new KeyAdapter()
      {
          public void keyPressed(KeyEvent e) { /* ... */ }
      };
      

      这可以为您节省一些工作。

      【讨论】:

      • 酷,我不知道这门课。这将为我节省大量的语法混乱(空方法)。
      【解决方案3】:

      KeyListener 是一个接口,这意味着你可以基于它编写一个类并实现它的功能。也许这tutorial 有帮助。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2021-07-27
      • 2016-09-21
      • 1970-01-01
      • 2013-11-21
      • 2020-04-29
      相关资源
      最近更新 更多