我正在使用此代碼來檢測用戶何時按下我的程序中的箭頭鍵。我需要將哪個箭頭鍵發送到將處理它並做它需要做的事情的方法。它的工作,但問題是我的代碼是愚蠢的和重複的,我相信這是一種縮短這種方式。如果這樣做更容易,我可以傳遞整數0-3而不是字符串。這是我的代碼現在:如何縮短此KeyListener代碼
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0), "left");
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0), "right");
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "up");
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "down");
getRootPane().getActionMap().put("left", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
close("left");
}
});
getRootPane().getActionMap().put("right", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
close("right");
}
});
getRootPane().getActionMap().put("up", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
close("up");
}
});
getRootPane().getActionMap().put("down", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
close("down");
}
});
那不是'KeyListener',這些都是關鍵的綁定(這是正確的方式去)。看看[這裏](http://stackoverflow.com/questions/22741215/how-to-use-key-bindings-instead-of-key-listeners)一個封裝一個動作中的所有移動命令的例子。 – user1803551