2017-10-27 28 views
0

나는 동시에 된 MouseEvent & 의 KeyEvent를 작동하는 방법을 알고 싶어요.은 동시/복합의 MouseListener 및 모든 KeyListener, 된 MouseEvent 및 KeyEvent를 자바

JFrame, JPanel을 가정 해 보겠습니다.

나는 이벤트와 어떻게 일을 알고 싶어 할 때 특정 된 MouseEvent & 의 KeyEvent 예 :

addKeyListener(new KeyAdapter() { 
    @Override public void keyReleased(KeyEvent evt) { 
    if ((evt.getKeyCode() == KeyEvent.VK_META) || (evt.getKeyCode() == KeyEvent.VK_WINDOWS)) { 
     //SomeEVENT 
    } 
    } 
}); 

addMouseListener(new MouseAdapter() { 
    public void mouseReleased(MouseEvent evt) { 
    if (SwingUtilities.isLeftMouseButton(evt)) { 
     System.out.println("Left button released."); 
    } 
    } 
}); 

테스트 코드 :

addMouseListener(new MouseAdapter() { 

    public void mouseClicked(MouseEvent evt) { 
    System.out.println("mouseClicked:"); 
    if ((evt.getModifiers() & KeyEvent.VK_META) == KeyEvent.VK_META) { 
     System.out.println("KeyEvent.VK_META:"); 
    } 
    if ((evt.getModifiers() & KeyEvent.VK_CONTROL) == KeyEvent.VK_CONTROL) { 
     System.out.println("KeyEvent.VK_CONTROL:"); 
    } 
    System.out.println("KeyEvent.getKeyModifiersText(evt.getModifiers()):" 
     + KeyEvent.getKeyModifiersText(evt.getModifiers())); 

    } 
}); 

출력

mouseClicked: 
mouseClicked: 
mouseClicked: 
mouseClicked: 
mouseClicked: 

버튼 컨트롤이 감지되지 않는 문제! 단지 작업을 수행하는 방법

그러나 때 simultaneosly LeftButton + CMD 또는 WIN? 테스트 코드 및 누르면 시프트 + 클릭하기 전에 메시지가 표시됩니다 내 사용

EDIT2

! 그것은 OS 문제 (필자는 맥 OS 시에라이)

mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌥+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌃+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌥+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1 
mouseClicked: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):Button1 
mouseClicked: 
KeyEvent.VK_CONTROL: 
KeyEvent.getKeyModifiersText(evt.getModifiers()):⇧+Button1 

인가?

+0

'MouseEvent' 지원이 키 확장 키 스트로크 (Alt, Ctrl 키, 메타와 같은 이벤트 객체 자체에 의해 제공되는 기능을 사용하는 것을 선호 , shift) – MadProgrammer

+0

[JavaDocs for'MouseEvent # getModifiersEx'] (https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html#getModifiersEx)에 나와있는 예제를 확인하십시오. -) – MadProgrammer

+0

@MadProgrammer 정보를 제공해 주셔서 감사합니다.하지만 왜 작동하지 않는지 이해할 수 없습니다. –

답변