本帖最后由 q1523987878 于 2012-02-13 18:57:28 编辑

解决方案 »

  1.   


    package com.demo;
    import java.awt.*;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.*;
    /**
     * 功能:java事件处理机制
     */
    @SuppressWarnings("serial")
    public class JFrameTest6 extends JFrame {    
        //定义组件
        JPanel mp = null;
        public static void main(String[] args) {
            new JFrameTest6();
        }
        public JFrameTest6() {
            mp = new Rect();
            this.add(mp);
            this.addKeyListener(mp);
            this.setSize(200,150);
            this.setLocation(500,200);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
    }
    @SuppressWarnings("serial")
    class Rect extends JPanel implements KeyListener{
        int x = 10;
        int y = 10;
        public void paint(Graphics g) {
            super.paint(g);
            g.fillOval(x, y, 10, 10);
            System.out.println(x+":"+y);
        }
        public void keyPressed(KeyEvent e) {
            if(e.getKeyCode()==KeyEvent.VK_DOWN){
                y++;
                System.out.println(y);
            }else if(e.getKeyCode()==KeyEvent.VK_UP){
                y--;
                System.out.println(y);
            }else if(e.getKeyCode()==KeyEvent.VK_LEFT){
                x--;
                System.out.println(x);
            }else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
                x++;
                System.out.println(x);
            }
            this.repaint();
        }
        public void keyReleased(KeyEvent e) {}
        public void keyTyped(KeyEvent e) {}
    }
    修改的地方:mp = new Rect();
              this.add(mp);
              this.addKeyListener(mp);
    。