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好吧,你只是在创建另一个类。因此,您可以向该类添加任意多个方法,甚至是与侦听器定义的方法非常相似的方法。唯一的要求是实现接口定义的方法。但是适配器会为您解决这个问题。它实现了所有的方法,但当然在这些方法中什么都不做。这就是它编译的原因。