5

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

KeyListener listener = new KeyListener();

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

谢谢,

托梅克

4

3 回答 3

9

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

KeyListener listener = new SomeKeyListenerImplementation();

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

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

    public void keyReleased(KeyEvent e) { /* ... */ }

    public void keyTyped(KeyEvent e) { /* ... */ }
};

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

于 2008-11-13T09:24:52.263 回答
5

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

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

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

于 2008-11-13T16:54:28.170 回答
1

KeyListener 是一个接口,这意味着您可以基于它编写一个类并实现其功能。也许本教程会有所帮助。

于 2008-11-13T09:25:58.440 回答