首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

有哪位高手可以告诉小弟我这个程序的有关问题,帮帮忙

2012-01-03 
有谁可以告诉我这个程序的问题,帮帮忙importjavax.swing.*importjava.awt.*importjava.awt.event.*impo

有谁可以告诉我这个程序的问题,帮帮忙
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;
import   java.util.*;
public   class   图形界面入门   {
  public   static   void   main(String   argv[])
  {draw   p=new   draw();
  }
}

class   draw   extends   JFrame    
{
  public   draw()
    {setLayout(new   GridLayout(2,1));
      getContentPane().add(new   in1());
      getContentPane().add(new   in());
      Dimension   p=Toolkit.getDefaultToolkit().getScreenSize();
      int   x=p.width;
      int   y=p.height;
      setLocation((x-500)/2,(y-500)/2);
      setSize(500,500);
      setVisible(true);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    }
 

 
}

class   in   extends   JPanel    
{
  private   JButton   p;
  private   JButton   q;
  private   in1   s=new   in1();
  public   in()
  {p=new   JButton( "OK ");
    q=new   JButton( "Cancel ");
    add(p);
    add(q);
    p.addActionListener(s);
    q.addActionListener(s);  
   
  }


}

class   in1   extends   JPanel     implements   ActionListener
{private   Graphics   g;
  public   void   actionPerformed(ActionEvent   e)
    {g=getGraphics();
      super.paintComponent(g);
      if(e.getActionCommand().equals( "OK "))
      //总是下面这里出错
    g.drawString( "OK   is   clicked ",getWidth()/2,getHeight()/5);
      if(e.getActionCommand().equals( "Cancel "))
  //总是下面这里出错
    g.drawString( "Cancel   is   clicked ",getWidth()/2,getHeight()/5);
      g.dispose();
    }
 
}

这里是问题
Exception   in   thread   "AWT-EventQueue-0 "   java.lang.NullPointerException
at   in1.paintComponent(图形界面入门.java:61)
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)



[解决办法]
在new in1的时候,传一个this过来,然后g= in.getGraphics()试试
用一个匿名内部类多方便

热点排行