2010-01-16 5 views
0

죄송합니다. 이중 게시를 위해 이미 한 번만이 질문을 올렸지 만 충분히 명확하지 않습니다. 내가 스레드를 시작할 때 설명 지금화살표 키로 JLabel 이동

public class Paddle extends JLabel {} 
public class Canvas extends JPanel implements Runnable {} 

: 나는 다음과 같은 수업을

: 나는 아직도 내가 더 잘 여기 내 문제를 설명하려고합니다 그래서 내 질문에 대한 답을 찾기 위해 관리하지 않은 캔버스에서 무한 루프 (프로그램이 종료되는 동안 반복)를 원합니다. 이 루프에는 DIRECTION 변수가 있습니다. 왼쪽 화살표 키를 누르면 -1로 설정됩니다. 오른쪽 화살표 키를 누르면 +1 값이되고 싶습니다. 위의 경우 중 어느 것도 해당하지 않는 경우 값은 기본적으로 0이어야합니다.

이번에는 더 노골적인 표현이되기를 바랍니다. 그렇지 않으면 알려주십시오. 초기화 코드에서 다음

public class MyKeyListener implements KeyListener, MouseListener{ 
    int direction = 0; 

    public void keyPressed(KeyEvent e) { 
     if(e.getKeyCode() == KeyEvent.VK_LEFT) direction = -1; 
     else if(e.getKeyCode() == KeyEvent.VK_RIGHT) direction = 1; 
    } 

    public void keyReleased(KeyEvent e) { 
     direction = 0; 
    } 
} 

(예를 들어, 인 JPanel의 생성자는 파생 클래스 :

+0

정확하게 무엇입니까? – Bozho

답변

0

음, 키 입력을 얻기 위해이 같이 KeyListener

를 구현하는 클래스를 가질 필요) 키 리스너를 MyKeyListener 클래스의 인스턴스로 설정했습니다.

MyKeyListener mk = new MyKeyListener(); 
    this.addKeyListener(mk); 

루프에서 mk의 방향을 확인하면됩니다.

+0

주 코드로 정확히 무엇을 알고 있습니까? 본관? JFrame? JPanel. 아무것도 작동하지 않는 것 같습니다. 초점을 맞추어야합니까? –

+0

아마도 Canvas 클래스의 생성자에있을 것입니다. 수동으로 초점을 설정할 필요는 없습니다. 캔버스를 클릭하십시오. keyPressed 함수에 System.out.println (direction) 문을 추가하여 실제로 호출되는지 확인할 수 있습니다. –

관련 문제