如何使用密钥监听器调用类?

时间:2016-05-18 02:47:28

标签: java keylistener

我正在尝试按下按键1时弹出一个窗口,按下按键2时会弹出一个单独的窗口。

    public void keyPressed(KeyEvent e)
    {

          if(e.getKeyCode() == KeyEvent.VK_1)
        {
          TicTacToeDriver tic = new TicTacToeDriver();
          PointCounter();
        }

        else if(e.getKeyCode() == KeyEvent.VK_2)
        {
            HangmanDriver hang = new HangmanDriver();
            PointCounter();
        }
    }

    public void keyReleased(KeyEvent e)
    {
        //do nothing
    }

    public void keyTyped(KeyEvent e)
    {
        //do nothing
    }

tic tac toe和hangman游戏是由两个独立的人创建的,程序员创建了自己的驱动程序。

1 个答案:

答案 0 :(得分:0)

解决方案:

我假设程序员熟悉面向java的编程......

因此,您只需创建其中一个游戏的新对象。

Hangman h = new Hangman();
or
Tick h = new Tick();
Tick.start() //depending on their code.

如果您正在运行Jframe ...      你需要

(insert object name).setVisible(true);

既然你提到他们有驱动程序,我认为他们使用main方法而不是构造函数,即使你提供的代码创建了类的对象。

因此,当单击按钮或按下键时..只需调用驱动程序类的main方法。

   hangman.main(null); //this is a terrible way to do it btw.

我还建议使用KeyBindings API而不是keylistener,因为键绑定不需要焦点...这也可能是问题。

另一个问题是......

this.addKeyListener(本);

您必须将keylistener添加到组件中。 但是,这是因为您使用keylistener时出现问题。您添加KeyListener的JComponent可能没有焦点。因此,动作不会触发,直到组件具有焦点并触发动作。