如何解决在面板中点击按钮后键盘事件失效问题

        首先,我们在面板中创建了按钮监听事件以及键盘监听事件,当点击了按钮后,键盘事件失效,例如在贪吃蛇游戏中,点击了其余的控制按钮,则无法再用键盘去控制贪吃蛇的移动了,差了很多资料,才发现这是一个焦点转移问题,,,,点击按钮后,焦点转移到了按钮上,,,,

         为此,我们需要重新获取焦点:panel.requestfocus();方法可以重新获取,但仅有这个不够,我们还必须确定它的位置(这就是我为什么会查很多资料的原因,知道有它,但不知道如何用它);

public  class SnakePanel1 extends JPanel implements KeyListener{//这是你创建的面板类

this.setFocusable(true);//获取焦点
 		this.addKeyListener(new KeyAdapter() {
});//这是你创建的键盘监听器,此处采用匿名内部类的方法实现键盘监听

    以上是面板,然而requestfocus()方法却不是放在你的键盘监听器的方法内,而是放在你建立的按钮监听那个方法里面,如果同一个面板内有按钮,并且你的按钮监听方法是一内部类的形式在写,我建议可以写一个方法

public void GetFocus() {
		this.requestFocus();
	}//重获焦点

//这是用于按钮监听的内部类,你需要把方法放在这里面,,
class beginAction implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		 GetFocus();
		// TODO Auto-generated method stub
		if(false==run) {
			Setrun();
		}
		else {
			Setnotrun();
		}
	}
	
}

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值