2012-11-16 1 views
1

나는 복수의 값을 가진 JComboBox을 가지고 있습니다. MAC에서 JComboBox의 팝업 창을 열려고 키스트 로크를 control-option-space 찾는 방법은 무엇입니까?Voiceover 유틸리티가있는 MAC의 JCombobox에서 팝업을 여는 Control-Option-Space 키

+0

최근 [편집] (http://stackoverflow.com/posts/13410975/revisions)이 새로운 질문을 나타낼 수 있습니다. 테스트를 위해 아래에 [sscce] (http://sscce.org/)를 추가했습니다. 다른 곳에 게시하는 경우이 Q & A를 참조하십시오. [다른 질문] (http://apple.stackexchange.com/). – trashgod

+0

이 [Q & A] (http://apple.stackexchange.com/q/71915/20589)도 참조하십시오. – trashgod

답변

3

표준 space 키 이외에 또는 대신에 control-option-space 키 바인딩을 원한다면 명확하지 않습니다. 두 경우 모두 아래에 표시된 것과 같은 바인딩을 사용하여 aquaSpacePressed 작업을 불러올 수 있습니다. 자세한 내용은 키 바인딩 사용 방법을 참조하십시오.

combo.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
    KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 
     KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK), 
    "aquaSpacePressed"); 

이 맥 전용이기 때문에, 당신은 이와 같은 조건을 사용할 수 있습니다 :

System.getProperty("os.name").startsWith("Mac OS X") 

부록을 : 아래 sscce가 개정 문제의 시나리오를 테스트하는 데 사용되었다.

부록 : 명확하지 않은 이유로 System Preferences > Speech > Text to Speechcontrol-option-space 바인딩을 선점합니다. 다른 방법으로는 아래 수정 된 예제에 표시된 Action, "spacePopup" 표준에 바인딩 할 수 있습니다.

import java.awt.EventQueue; 
import java.awt.event.KeyEvent; 
import javax.swing.JComboBox; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.KeyStroke; 

/** 
* @see http://stackoverflow.com/a/13412208/230513 
*/ 
public class ComboKeyTest extends JPanel { 

    public ComboKeyTest() { 
     JComboBox cpmbo = new JComboBox(); 
     cpmbo.addItem("One"); 
     cpmbo.addItem("Two"); 
     cpmbo.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
      KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 
      KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK), 
      "spacePopup"); 

     this.add(cpmbo); 
    } 

    private void display() { 
     JFrame f = new JFrame("NewJavaGUI"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(this); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new ComboKeyTest().display(); 
      } 
     }); 
    } 
} 
+0

고마워요.이 작품은 저에게 절대로 좋습니다. 그러나 음성 바로 가기 유틸리티가 실행 중일 때이 바로 가기 키를 사용해야하는 문제가 하나 더 있습니다. 음성으로 유틸리티를 사용하여 팝업을 열지 못했습니다. – varuag

+0

시스템 환경 설정에서 충돌하는 바로 가기 키를 확인할 수 있습니다. – trashgod

+0

voice over utility가 실행 중이더라도 'dictation & Speech'와 같이 시스템 기본 설정의 항목 중 control-option-space로 드롭 다운 목록 팝업을 통해 확인했습니다. – varuag

관련 문제