import java.awt.*;
import javax.swing.*;
import java.awt.event.*;public class ButtonDemo extends JPanel implements ActionListener
{
   JButton b1,b2;
   String message;
   int row,col;   public ButtonDemo()
   {
      ImageIcon buttonIcon1 = new ImageIcon("on.gif");
      ImageIcon buttonIcon2 = new ImageIcon("off.gif");
      b1 = new JButton("First Button",buttonIcon1);
      b1.setMnemonic(KeyEvent.VK_F);
      b1.setActionCommand("first");
      b2 = new JButton("Second button",buttonIcon2);
      b2.setMnemonic(KeyEvent.VK_S);
      b2.setActionCommand("second");
      b1.addActionListener(this);
      b2.addActionListener(this);
      add(b1);
      add(b2);
   }   public void actionPerformed(ActionEvent e)
   {
      if(e.getActionCommand().equals("first"))
      {
         message = "第一个按钮被按下!";
         row = 50;
         col = 50;
      }
      else if(e.getActionCommand().equals("second"))
      {
         message = "第二个按钮被按下";
         row = 50;
         col = 170;
      }
      repaint();
   }   public static void main(String[] args)
   {
      JFrame jf = new JFrame("按钮测试");
      jf.getContentPane().add(new ButtonDemo());
      jf.setSize(300,200);
      jf.setVisible(true);
      jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }   public void paintComponent(Graphics g)
   {
        super.paintComponent(g);
        g.drawString(message,col,row);
   }
}---------抱错信息如下
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: String is null
at sun.java2d.SunGraphics2D.drawString(Unknown Source)
at ButtonDemo.paintComponent(ButtonDemo.java:60)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
at java.awt.Container.paint(Unknown Source)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)怎么抱了这么多错误啊!我知道是空指针异常的错误,只是不知道是什么原因.