以下程序实现在窗口绘制小球

以下程序实现在窗口绘制小球,通过键盘控制小球上下左右的移动。请修改程序,使用继承KeyAdapter类的匿名内部类方式实现键盘事件处理。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class KeyTest extends JFrame{
    MyPanel mp = null;    
    public KeyTest(){
        mp = new MyPanel();
        add(mp);
        addKeyListener(mp);
        setSize(400,300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
public static void main(String[] args) {
        new KeyTest();
    }
}
class MyPanel extends JPanel implements KeyListener {
    int x = 30;
    int y = 30;
    public void paint(Graphics g){
        super.paint(g);
        g.fillOval(x,y,12,12);
    }
    public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}    
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_UP)
            y -= 10;
        else if(e.getKeyCode()==KeyEvent.VK_DOWN)
            y += 10;
        else if(e.getKeyCode()==KeyEvent.VK_LEFT)
            x -= 10;
        else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
            x += 10;
        repaint();
    }    
}    


public class KeyTest extends JFrame{
    MyPanel mp = null;    
    public KeyTest(){
        mp = new MyPanel();
        addKeyListener(new t());
        add(mp);
        setSize(400,300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    class t extends KeyAdapter
    {
        public void keyPressed(KeyEvent e) {
             if(e.getKeyCode()==KeyEvent.VK_UP)
                    mp.y -= 10;
                else if(e.getKeyCode()==KeyEvent.VK_DOWN)
                    mp.y += 10;
                else if(e.getKeyCode()==KeyEvent.VK_LEFT)
                    mp.x -= 10;
                else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
                    mp.x += 10;
                mp.repaint();
        }
        
    }
public static void main(String[] args) {
        new KeyTest();
    }
}
class MyPanel extends JPanel  {
    int x = 30;
    int y = 30;
    public MyPanel()
    {
        //this.addKeyListener(this);
    }
    public void paint(Graphics g){
        super.paint(g);
        g.fillOval(x,y,12,12);
    }
    
    }    
}