2
嘗試過有人建議的KeyEvents我切換到按鍵綁定激活箭頭鍵的推動某些事件而一個是在一個TextArea按鍵綁定作爲替代KeyEvent的還是非功能性
area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_UP"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Event Handled");
oneRay[pick][0] = ("");
if(i>=4){
i=0;
area.setText("");
}
caller();
}
});
area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_DOWN"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Event 2 Handled");
area.append("\n"+oneRay[pick][1]);
buton1.setEnabled(true);
buton2.setEnabled(true);
}
});
area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_RIGHT"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
if(i>=4){
i=0;
area.setText("");
}
caller();
}
此代碼覆蓋三個不同的鍵綁定,但沒有任何工作,無論我按下向左下方的光標,只是在TextArea中朝這個方向移動。 這次我做錯了什麼。請幫幫我!
謝謝!我從來沒有考慮過有必要取代現有的功能,我期待一些魔術 - 再次感謝。 (我可能有另外一個問題,雖然很快...) –
@WilliamBrun,對不起我原來的意見是錯的,你的基本代碼是正確的,問題是,你沒有內置擊鍵正確,所以原來的行動仍然還在調用。然而,當你真的只需要用新的Action更新ActionMap時,你的原始代碼也試圖更新InputMap和ActionMap。當我建議您需要更換操作時,這就是我的意思。除非要爲InputMap中不存在的KeyStroke添加和操作,否則不需要對InputMap進行任何更改。 – camickr
嘿!那很棒。我跟蹤了你發送給我的源代碼並跳過了一些內容,現在程序正常運行,而且我對現在可以跳過的內容的假設現在已經得到您的驗證。謝謝。 –