用键盘的上下左右键控制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);
}
}
}