答案:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SimulatedTank extends JFrame implements KeyListener{
JButton b;
public SimulatedTank(){
b = new JButton("Tank");
b.setBackground (Color.BLUE);
b.setForeground (Color.RED);
// b.setEnabled (false);
b.setBorder (BorderFactory.createRaisedBevelBorder ());
b.setSize (50,50);
b.setLocation (375,225);
b.addKeyListener (this);
add(b);
this.setTitle ("SimulatedTank");
this.setLayout (null);
this.setSize (800,500);
this.setLocationRelativeTo (null);//窗口居中
this.setVisible (true);
this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
public void setLocaltion(String direction){
int x = b.getLocation ().x;//坦克(按钮)的位置坐标
int y = b.getLocation ().y;
int w = b.getWidth ();//坦克(按钮)的宽与高
int h = b.getHeight ();
int width = this.getWidth ();//战场(界面)的宽与高
int height = this.getHeight ();
if(direction.equals ("上")){
if(y>0) y-=5;//if()条件语句--防止坦克出界
}else if(direction.equals ("下")){
if(y<height-h-30) y+=5;
}else if(direction.equals ("左")){
if(x>0) x-=5;
}else if(direction.equals ("右")){
if(x<width-w-5) x+=5;
}else{
x=375;
y=225;
}
this.setTitle ("Tank point is ("+x+","+y+")");
b.setLocation (x,y);
}
public static void main(String[] args){
new SimulatedTank();
}
public void keyTyped (KeyEvent e){}//敲击事件
public void keyReleased (KeyEvent e){//释放事件
this.setTitle ("SimulatedTank");
}
public void keyPressed (KeyEvent e) {//按下事件
if(e.getKeyCode ()==KeyEvent.VK_UP){
setLocaltion("上");
}else if(e.getKeyCode ()==KeyEvent.VK_DOWN){
setLocaltion("下");
}else if(e.getKeyCode ()==KeyEvent.VK_LEFT){
setLocaltion("左");
}else if(e.getKeyCode ()==KeyEvent.VK_RIGHT){
setLocaltion("右");
}
}
}用键盘的上下左右键控制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);
}
}
}