2014-02-11 2 views
1

내 프로그램의 모든 내용이 마우스 및 키보드 수신기를 제외하고 작동합니다. JList에서 JList를 다루는 몇 가지 actionListeners를 얻었습니다.하지만 여기서는 세 가지 모두와 함께 작업해야한다고합니다. 그래서 컴파일하는 이유를 알고 싶지만 작동하지 않습니다. 내가 뭔가 잘못하고 있는거야?Java 이벤트 리스너 (마우스 및 키보드)

panel.addKeyListener(new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 

     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
      if(e.getKeyCode() == KeyEvent.VK_UP){ 
       shape.addSides(); 
      } 
      if(e.getKeyCode() == KeyEvent.VK_DOWN){ 
       shape.subSides(); 
      } 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 

     } 

    } 

    ); 
    panel.addMouseListener(new MouseListener(){ 
     @Override 
     public void mouseEntered(MouseEvent e){ 
      if(e.getButton() == MouseEvent.BUTTON1){ 

       shape.addSides(); 
      } 
      if(e.getButton() == MouseEvent.BUTTON3){ 

       shape.subSides(); 
      } 

     } 

     @Override 
     public void mouseClicked(MouseEvent e) { 

     } 

     @Override 
     public void mousePressed(MouseEvent e) { 
     } 

     @Override 
     public void mouseReleased(MouseEvent e) { 
     } 

     @Override 
     public void mouseExited(MouseEvent e) { 
     } 

    } 
    ); 

답변

3

KeyListener에 관해서는 Listen-to 구성 요소에 포커스가 있고 포커스가 있지 않으면 작동하지 않습니다. 따라서 JPanel에서 setFocusable(true)requestFocusInWindow()으로 전화 할 수 있습니다. MouseListener에 관해서는 - 마우스 이벤트를 가져 와서 JPanel에 도달하지 못하게 할 수 있습니다. 이것을 디버그하려면 minimal, compilable, runnable example program을 게시해야합니다.

또한 MouseListener와 관련하여 마우스 이벤트에서 getButton()을 확인하는 것은 의미가 없습니다. 이러한 유형의 이벤트에는 단추가 포함되지 않습니다. 대신 MouseMotionListener의 mouseDragged(...)을 확인하겠습니까?

+1

+1. 또 다른 방법은이 [Q & A] (http://stackoverflow.com/questions/20007625/keyboard-input-with-swing-java)에 설명 된대로 JComponent.WHEN_IN_FOCUSED_WINDOW 조건을 사용하여 JButton의 키 바인딩을 설정하는 것입니다. – dic19

+0

' 내 책에'setFocusable (true)'와'requestFocusInWindow()'가있다. 그게 그가 나를 위해 키보드를 고정. mouseListener의 배치에 관해서는, 원래 위의 위치에 배치했습니다. 그것이 작동하지 않을 때 나는 copypasta를 모두 4 일해서 사람이 일하기를 바랐다. 방금'mouseClicked()'에 넣으면 작동합니다. 도와 줘서 고마워. 나는 프로젝트를 제 시간에 완료했다. – Chris

+0

@ChrisVachon : 다행 이군! –

관련 문제