[英]How do I call a class using a key listener?
我试图在按下键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
}
井字游戏和子手游戏由两个不同的人创建,程序员创建了自己的驱动程序。
解:
我假设程序员熟悉面向Java的编程...
因此,您只需创建其中一个游戏的新对象。
Hangman h = new Hangman();
or
Tick h = new Tick();
Tick.start() //depending on their code.
如果您正在运行Jframe ...,则需要
(insert object name).setVisible(true);
自从您提到它们具有驱动程序以来,即使您提供的代码创建了类的对象,我也假定它们使用主方法而不是构造函数。
因此,当单击按钮或按下键时。只需调用驱动程序类的main方法。
hangman.main(null); //this is a terrible way to do it btw.
我还建议使用KeyBindings API而不是keylistener,因为键绑定不需要关注...这也可能是问题。
另一个问题是
this.addKeyListener(this);
您必须将侦听器添加到组件。 但是,这就是您使用keylistener时出现问题的地方。您添加了KeyListener的JComponent可能没有焦点。 因此,在组件获得焦点并触发动作之前,不会触发该动作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.