Java:使用带箭头键的按键

我有一些我需要修改的代码。 在代码中,原作者使用KeyStroke.getKeyStroke来获取用户输入。 例如,在此代码中,他使用a是左箭头而不是左箭头。

我想改变这个,但我不知道怎么做。

这是原始代码:

 registerKeyboardAction( new ActionListener() { public void actionPerformed(ActionEvent e) { tick(RIGHT); } }, "right", KeyStroke.getKeyStroke('d'), WHEN_IN_FOCUSED_WINDOW ); 

我必须将它改为这样的东西,但是当它运行时,它不起作用: KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT);

KeyStroke.getKeyStroke("RIGHT");

向下 ARROW KEY启动程序,首先观察字符串。 这里看一下这个示例程序:

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class KeyBindingExample { private void createAndDisplayGUI() { JFrame frame = new JFrame("Key Binding Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DrawingPanel contentPane = new DrawingPanel(); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); contentPane.requestFocusInWindow(); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new KeyBindingExample().createAndDisplayGUI(); } }); } } class DrawingPanel extends JPanel { private int x; private int y; private String[] commands = { "UP", "DOWN", "LEFT", "RIGHT" }; private ActionListener panelAction = new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { String command = (String) ae.getActionCommand(); if (command.equals(commands[0])) y -= 1; else if (command.equals(commands[1])) y += 1; else if (command.equals(commands[2])) x -= 1; else if (command.equals(commands[3])) x += 1; repaint(); } }; public DrawingPanel() { x = 0; y = 0; for (int i = 0; i < commands.length; i++) registerKeyboardAction(panelAction, commands[i], KeyStroke.getKeyStroke(commands[i]), JComponent.WHEN_IN_FOCUSED_WINDOW); } @Override public Dimension getPreferredSize() { return (new Dimension(500, 300)); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); String displayText = "X : " + x + " and Y : " + y; System.out.println(displayText); g.drawString(displayText, x, y); } } 

你应该可以使用KeyStroke.getKeyStroke("DOWN");"UP""LEFT""RIGHT" ,做你想做的事。

有关更多详细信息,请参阅javadoc 。