java 上下键_用键盘的上下左右键控制JAVA SWING UI中的组件的移动等事件
用键盘的上下左右键控制JAVA SWING UI中的组件的移动等事件
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TestImage { public static void main(String[] args) { new TestFrame(); } } class TestFrame extends JFrame { CheckboxGroup group = new CheckboxGroup(); Checkbox[] chk = new Checkbox[4]; int current = 0, temp = 0; ChkListener l = new ChkListener(); TestFrame() { chk[0] = new Checkbox("A", group, true); chk[1] = new Checkbox("B", group, false); chk[2] = new Checkbox("C", group, false); chk[3] = new Checkbox("D", group, false); //this.setLayout(new GridLayout(2, 2)); this.getContentPane().setLayout(new GridLayout(2, 2)); for (int i = 0; i < chk.length; i++) { chk[i].addItemListener(l); //add(chk[i]); this.getContentPane().add(chk[i]); } Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { public void eventDispatched(AWTEvent e) { if (((KeyEvent)e).getID() == 401) myAction(((KeyEvent) e).getKeyCode()); } }, AWTEvent.KEY_EVENT_MASK); this.setSize(500, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } class ChkListener implements ItemListener { public void itemStateChanged(ItemEvent e) { current = (int)(group.getSelectedCheckbox().getLabel().charAt(0)) - (int)'A'; } } public void myAction(int currentSelect) { switch (currentSelect) { case KeyEvent.VK_DOWN: case KeyEvent.VK_UP: current = (current + 2) % 4; group.setSelectedCheckbox(chk[current]); break; case KeyEvent.VK_LEFT: case KeyEvent.VK_RIGHT: current = current < 2 ? current = (current + 1) % 2 : (current + 1 > 3 ? 2 : 3); group.setSelectedCheckbox(chk[current]); break; case KeyEvent.VK_ENTER: JFrame frame = new JFrame("You selection is: " + group.getSelectedCheckbox().getLabel()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setSize(300, 200); frame.setVisible(true); } } } ———————————————— 版权声明:本文为CSDN博主「郑培凯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_30649293/article/details/114215466