CTRL_DOWN_MASK + some key
과 같은 키 바인딩과 함께 한정자를 사용하는 방법을 이해하지만 특정 작업을 제어 할 때 특정 작업 (예 : 'W') 및 위쪽 화살표가 모두 눌려 있습니다. CTRL_DOWN_MASK + some key + Up Arrow
과 같은 것입니다.키 바인딩을 사용하여 3 개 이상의 키 조합에 작업 바인딩
나는 이것을 사용하여 특정 사운드 클립의 볼륨을 변경합니다. 따라서 CTRL_DOWN_MASK + W + Up Arrow
을 모두 누르면 W JButton에 할당 된 사운드 클립에 대한 볼륨이 증가하고 CTRL_DOWN_MASK + W + Down Arrow
이 있으면 해당 사운드 클립에 대한 볼륨이 감소합니다.
public void bindKey(JPanel base)
{
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key, InputEvent.CTRL_DOWN_MASK),"Volume"+key);
base.getActionMap().put("Volume"+key, new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
//if(Up Arrow is being pressed.)
setGain(currentGain() + 1.0f);
//if(Down Arrow is being pressed.)
setGain(currentGain() - 1.0f);
}
});
}
[로직을 직접] (http://stackoverflow.com/a/13440608/203657) – kleopatra
감사합니다 @kleopatra 나는 그것을 체크 아웃합니다. – Alex
@kleopatra 그 게시물에 대한 귀하의 답변을 통해 기존 액션 맵에 어떻게 구현 하시겠습니까? 나는 당신이 만드는 AbstractAction을 확장하는 것과 당신이 키 A + S + D의 매핑에 액션을 할당하는 방법을 이해하지 못합니다. – Alex