두 명이 게임 애플릿을 만들고 있습니다. 두 선수는 공이 벽과 충돌하지 않도록 디스크를 제어해야합니다. 한 명의 플레이어가 키보드 동작을 통해 마우스 동작 및 기타 컨트롤로 디스크를 제어합니다. 문제는 두 번째 플레이어가 MouseMotionListener 때문에 키보드 키에 포커스가 남아 있지 않기 때문에 디스크를 제어 할 수 없다는 것입니다. 이 문제를 해결하는 방법을 모르겠습니다. 여기에 코드입니다 :MouseListener가 활성화되어있을 때 키보드 손실이 집중됩니다.
public void init()
{
handle = new HandlerClass();
addMouseMotionListener(handle);
addKeyListener(handle);
}
private class HandlerClass implements MouseMotionListener,KeyListener
{
public void mouseMoved(MouseEvent event)
{
MouseY=event.getY();
if(MouseY<=0)
MouseY=0;
else
if(MouseY>=getHeight()-radius*2-1)
MouseY=getHeight()-radius*2-1;
}
public void keyPressed(KeyEvent event)
{
switch(event.getKeyCode())
{
case KeyEvent.VK_UP:
if(keyboardY<=0)
{
keyboardY=0;
}
keyboardY=keyboardY+1;
break;
case KeyEvent.VK_DOWN:
System.out.println("down key pressed");
if(keyboardY>=getHeight()-radius*2-1)
{
keyboardY=getHeight()-radius*2-1;
}
keyboardY-=1;
break;
}
}
편집 : 내가 setFocusable(true);
을 추가하여 키보드에 대한 포커스를 잃는 문제를 해결하지만 지금은 게임이 지옥으로 깜박입니다. 나는 게임에서 무슨 일이 일어나고 있는지 알 수 없다. 감사합니다.