Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否需要扩展适配器类';这里';?_Java_Events_User Interface_Adapter - Fatal编程技术网

Java 我是否需要扩展适配器类';这里';?

Java 我是否需要扩展适配器类';这里';?,java,events,user-interface,adapter,Java,Events,User Interface,Adapter,这是我的片段: tf.addKeyListener(new KeyListener() { public void keyTyped(KeyEvent ke) { getEnter(ke); } }); KeyListener接口中有3种方法。但我只想使用一种方法,即keyTyped() 我该怎么做? (是否需要扩展AdapterClass?如果需要,如何扩展?是,您需要扩展KeyAdapter类。它提供了所有KeyListener方法的(空)实

这是我的片段:

tf.addKeyListener(new KeyListener() {
     public void keyTyped(KeyEvent ke) {
            getEnter(ke);
     }
  });
KeyListener接口中有3种方法
。但我只想使用一种方法,即
keyTyped()
我该怎么做?
(是否需要扩展AdapterClass?如果需要,如何扩展?

是,您需要扩展
KeyAdapter
类。它提供了所有
KeyListener
方法的(空)实现。您必须重写所需的实现,空实现将满足接口的约定。您可以使用与代码中相同的方式对其进行扩展:

tf.addKeyListener(new KeyAdapter() {
     public void keyTyped(KeyEvent ke) {
             getEnter(ke);
     }
  });
正如KeyAdapter的Javadoc本身所说:

扩展此类以创建KeyEvent侦听器并重写感兴趣事件的方法。(如果实现KeyListener接口,则必须定义其中的所有方法。此抽象类为所有方法定义空方法,因此您只能为关心的事件定义方法。)


请注意,使用适配器类比使用侦听器更危险,因为您可能会在覆盖的方法名称上出错,这意味着您的方法不会被调用,但会被编译。以Quantum的例子为例。他错误地重写了该方法,因此密钥侦听器将无法工作。这显然不可能发生在接口上。如果使用1.5或更高版本,请始终在其上添加@Override注释,以确保操作正确。@MeBigFatGuy,我刚才看到了!当我给一个函数取了一个错误的名字时,程序如何编译而不出错呢?编辑以修复方法名的错误:)@Suhail好吧,你只是在创建另一个类。因此,您可以向该类添加任意多个方法,甚至是与侦听器定义的方法非常相似的方法。唯一的要求是实现接口定义的方法。但是适配器会为您解决这个问题。它实现了所有的方法,但当然在这些方法中什么都不做。这就是它编译的原因。