2013-04-12 1 views
0

응용 프로그램에서 자판 배열과 독립적 인 키보드 단축키를 구현하려고합니다 (예 : Ctrl + + 확대/축소 사용). 불행하게도, 첫 번째 방법은 작동하는 것 같군Java : 한정자와 함께 입력 된 키 입력 사용

KeyStroke.getKeyStroke(new Character('+'), 0) 
KeyStroke.getKeyStroke(new Character('+'), InputEvent.CTRL_DOWN_MASK) 

내가 수정 자 키를 사용하고 싶습니다 동안 같은 두 번째 같이 :

는 뭔가처럼 그렇게하는 올바른 방법입니다 가정 선.

해결 방법에 대한 의견이 있으십니까?

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.InputEvent; 

import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.KeyStroke; 

public class KeystrokeTest extends JFrame{ 
    JLabel label = new JLabel("text"); 
    public KeystrokeTest(){ 
     JPanel panel = new JPanel(); 
     panel.add(label); 
     panel.registerKeyboardAction(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       label.setVisible(!label.isVisible()); 
      } 
     }, 
     KeyStroke.getKeyStroke(new Character('+'), InputEvent.CTRL_DOWN_MASK), 
     JComponent.WHEN_IN_FOCUSED_WINDOW); 
     add(panel); 
     setSize(200,200); 
    } 
    public static void main(String[] args) { 
     new KeystrokeTest().setVisible(true); 
    } 
} 

답변

0

하는 대신

KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_MASK); 
+0

감사 codeMan @이 줄을 시도, 작동하지만 내가 원하는되지 않습니다 : : 여기

는 완전한 조각이다 KeyEvent.VK_PLUS 키 플러스,하지를 말한다 입력 된 문자. 즉, '+'가 기본 레이어 (예 : 독일어 키보드)에있는 키보드 레이아웃에서만 작동하지만 'Shift ='를 통해 '+'에 액세스하는 미국 레이아웃에서는 말하지 않습니다. 인수로 Character ('+')를 제공함으로써 입력 된 '+'에 관심이 있다고 명시하지만 불행히도 수정 자 키는 사용하지 않는 것으로 보입니다. – Matt