import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;class TheListener
{
  public static void main(String[] args)
  {
   MyFrame m = new MyFrame();
    m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   m.show();    
  
  }
}class MyFrame extends JFrame
{
 int ox,oy,lx,ly;  private char drawType = 'c';
         
          public MyFrame()
{

   this.setSize(600,600);
   this.addKeyListener(
            new KeyAdapter(){
            public void keyTyped(KeyEvent event)
           {

drawType = event.getKeyChar();
System.out.println(drawType);//为了验证用的,假如能监听到则打印
   }
}
);
this.addMouseListener(

new MouseAdapter(){

public void mousePressed(MouseEvent event){

ox = event.getX();
oy = event.getY();
}

public void mouseReleased(MouseEvent event){

lx = event.getX();
ly = event.getY();

repaint();
}
}
);
Container contentPane = this.getContentPane();
         contentPane.add(new MyPanel());//问题所在,不知道为什么当在这加入这个MyPanel对象就失去监听!!

        }
public void paint(Graphics g)
{
   super.paint(g);
        
             switch(drawType)
             {
               case 'r':
               g.drawLine(ox,oy,lx,ly);
               break;
               case 'l':
               g.drawString("the fool man",100,100);
               break;
               default:
               break;
              } }
}
class MyPanel extends JPanel
{
   int ox,oy,lx,ly;
   
   public MyPanel()
   {
       MyButton m1 = new MyButton(Color.blue,"blue");
       MyButton m2 = new MyButton(Color.red,"red");
       MyButton m3 = new MyButton(Color.BLACK,"black");
       this.add(m1);
       this.add(m2);
       this.add(m3);
       m1.addActionListener(m1.getInner());
       m2.addActionListener(m2.getInner());
       m3.addActionListener(m3.getInner());

   }}
class MyButton extends JButton
{
    private Color theColor = null;
    private Color[] MyColor = new Color[2];
    private static int click = 0;
    private static Color theLineColor;
MyButton(Color c,String name)
{

    MyColor[0] = c;
    MyColor[1] = Color.white;
    this.setText(name);
}

class InnerListener implements ActionListener
{

public void actionPerformed(ActionEvent e)
{   
  int i = MyButton.this.click%2;
MyButton.this.setBackground(MyButton.this.MyColor[i]);
theLineColor = MyColor[i];
MyButton.this.click++;
        
}  }

InnerListener getInner()
{
return new InnerListener();
}

static Color getLineColor()
{
return theLineColor;
}
}
调试很久,初次学awt与swing,请教高手们