import java.awt.*; 
import java.awt.event.*;class An extends KeyAdapter
{   
public void keyPressed(KeyEvent e) {   int k=e.getKeyCode();
         if(k==KeyEvent.VK_DOWN){
y+=2;

}else if(k==KeyEvent.VK_UP){
y-=2;
}else if(k==KeyEvent.VK_LEFT){
x-=2;
}else if(k==KeyEvent.VK_RIGHT){
x+=2;
}
repaint();
}
}
class YuanYuan extends Panel
{      int x=10,y=10;
public void paint(Graphics g){
super.paint(g);
        g.fillOval(x, y, 30, 30);

}
}public class Zong extends Frame
{
public Zong(){
this.setSize(680, 450);
this.setVisible(true);
this.add(new YuanYuan());

}
public static void main(String[] args){
Zong z=new Zong();
}
}请大家帮忙弄一下这段代码 让圆上下左右移动 (本人菜鸟,能有详解过程就更好了) 麻烦大家了!

解决方案 »

  1.   

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;import javax.swing.JFrame;
    import javax.swing.JPanel;public class YuanYuan extends JPanel {
    private static int WIDTH=680;
    private static int HEIGHT=450;
    private int x=10, y=10;
    public static void main(String[] args){
    JFrame frame = new JFrame("Yuan");
    YuanYuan panel = new YuanYuan();
    frame.setSize(WIDTH, HEIGHT);
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.add(panel);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.action();
    }

    public void action(){
    KeyAdapter l = new KeyAdapter(){
    public void keyPressed(KeyEvent e) {
    int k = e.getKeyCode();
    if (k == KeyEvent.VK_DOWN) {
    y += 2; } else if (k == KeyEvent.VK_UP) {
    y -= 2;
    } else if (k == KeyEvent.VK_LEFT) {
    x -= 2;
    } else if (k == KeyEvent.VK_RIGHT) {
    x += 2;
    }
    repaint();
    }
    };
    requestFocus();
    addKeyListener(l);
    } public void paint(Graphics g) {
    g.setColor(new Color(0xffffff));
    g.fillRect(0, 0, WIDTH, HEIGHT);
    g.setColor(new Color(0x0));
    g.fillOval(x, y, 30, 30); }
    }