如何修改輸入/動作映射,以便當我將動作綁定到特定鍵時,它還會綁定動作到某些修飾符 +特定鍵?鍵綁定中的修飾符(SHIFT +(隨機鍵))
即SHIFT_DOWN_MASK + specific key
所以我所有的鍵綁定的工作,沒有修飾。我將一個聲音文件分配給鍵盤上的某個字母,當我按下該鍵時,聲音文件將播放。我也有代碼來循環聲音文件,切換是否循環,並檢查它是否循環。我想要這樣做,除了將play()
操作綁定到密鑰外,它還會將toggleLoop()
操作綁定到操作SHIFT_DOWN_MASK + specific key
。
我在哪裏綁定動作:
@SuppressWarnings("serial")
public void bindKey(JPanel base)
{
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key),"play"+key);
base.getActionMap().put("play"+key, new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
System.out.println(key + " Pressed");
play();
}
});
//assigning action just the key pressed
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke((char)(key-32), InputEvent.SHIFT_DOWN_MASK),"loop"+(char)(key-32));
base.getActionMap().put("loop"+(char)(key-32), new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
System.out.println(key + " toggled loop");
toggleLoop();
//fix toggle
}
});
//^ where I try to assign action to modifier
}
只分享你的代碼的相關問題部分...不是所有的類:) – 2012-12-05 19:22:41
+1給ALJI Mohamed。請[閱讀此](http://sscce.org) – durron597
修復它,並解決我的問題反正。我會發布我是如何解決它爲其他人尋找。 – Alex