Java 在扩展实现KeyListener的类的类中,使系统调用键未按下

Java 在扩展实现KeyListener的类的类中,使系统调用键未按下,java,Java,假设我有一个类MyKeyListener,它实现了java.awt.event.KeyListener,这意味着它有一个方法: public void keyPressed(java.awt.event.KeyEvent keyEvent) {} 现在我想为自己创建另一个类MyFrameworkClass,它扩展了MyKeyListener,但有点覆盖了keyPressed()方法 public void keyPressed(int keyCode) {} 显然,这不起作用,因为系统使用j

假设我有一个类
MyKeyListener
,它实现了
java.awt.event.KeyListener
,这意味着它有一个方法:

public void keyPressed(java.awt.event.KeyEvent keyEvent) {}
现在我想为自己创建另一个类
MyFrameworkClass
,它扩展了
MyKeyListener
,但有点覆盖了
keyPressed()
方法

public void keyPressed(int keyCode) {}
显然,这不起作用,因为系统使用
java.awt.event.KeyEvent
对象调用
keyPressed
,但我现在要求的是
int

如果我的
按键(int-keyCode)
被重新设置为例如
mykeycode(int-keyCode)
,则我的问题将得到解决。然后我可以在
MyKeyListener
类中执行类似操作:

public void keyPressed(java.awt.event.KeyEvent keyEvent) {
 myKeyPressed(keyEvent.getKeyCode());
}

public void abstract myKeyPressed(int keyCode);
我的问题是:有没有什么方法可以做到这一点,同时保持两种方法的名称相同?
也就是说,让系统调用class
MyKeyListener
中的
keyPressed()
,而不是
MyFrameworkClass
中的
(因为我想从
MyKeyListener

手动调用
MyFrameworkClass
中的一个,您就在正确的轨道上了。 具有单独签名的两个方法(在您的示例中为参数列表)被视为不同的方法

您可以这样实施您的想法:

package test;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class MyFramework {
    static class MyKeyListener implements KeyListener {
        @Override
        public void keyPressed(KeyEvent e) {
            keyPressed(e.getKeyCode());
        }
        public void keyPressed(int keyCode) {}

        @Override public void keyTyped(KeyEvent e) { }
        @Override public void keyReleased(KeyEvent e) { }
    }

    static class MyFrameworkClass extends MyKeyListener {
        @Override
        public void keyPressed(int keyCode) {
            System.out.println(String.format("Key pressed: '%d'", keyCode));
        }
    }

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Framework test");
        jFrame.setSize(200, 200);
        jFrame.addKeyListener(new MyFrameworkClass());
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }
}

非常感谢!你的答案不太清楚我最终是怎么做的,但它帮助了我很多。