import java.awt.*;
import java.awt.event.*;public class DrawLine extends Frame
{
 static int starX;
 static int starY;
 static int endX;
 static int endY;
 static Graphics graphics; public DrawLine()
 {
  this.setSize(400,300);
  this.setLocation(300,200);
  this.addMouseListener(new MyMouseAdapter());
  this.addMouseMotionListener(new MyMouseMotionAdapter());
  this.addWindowListener(new WindowClosing());
  this.setVisible(true);
 } public static void main(String args[])
 {
  DrawLine drawline=new DrawLine();
 }
}class WindowClosing extends WindowAdapter
{
 public void windowClosing(WindowEvent e)
 {
  e.getWindow().dispose();
  System.exit(0);
 }
}class MyMouseAdapter extends MouseAdapter
{
 public void mousePressed(MouseEvent e)
 {
  DrawLine.starX=e.getX();
  DrawLine.starY=e.getY();
 }
 public void mouseReleased(MouseEvent e)
 {
  DrawLine.endX=e.getX();
  DrawLine.endY=e.getY();
  DrawLine.graphics.drawLine(DrawLine.starX,DrawLine.starY,DrawLine.endX,DrawLine.endY);
 }
} class MyMouseMotionAdapter extends MouseMotionAdapter
{
}
这程序可以运行,但运行后我点击运行的界面时就会出现异常,有哪位高手指点一下~

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【aheqq】截止到2008-07-12 02:37:26的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:80                       每贴平均分数:20                       
    回帖的总数量:3                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:4                        未结的总分数:80                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    哈哈,你抛出的异常写出来呀
    看了才知道是那个地方有debug啊
      

  3.   

    你那个里面的DrawLine.graphics是空的,自己再好好研究研究吧
    让你见识一下真正的画线,hohoimport java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;public class DrawPane extends JComponent
    {
        private static final long serialVersionUID = -8963598853892068851L;    private int startX = 0;    private int startY = 0;    private int endX = 0;    private int endY = 0;    private List<Draw> drawList = new ArrayList<Draw>();    private Color color = Color.BLUE;    private Font font = new Font("Courier New", Font.BOLD, 14);    private boolean drawing = false;    public static void main(String[] args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    final DrawPane draw = new DrawPane();
                    JFrame frame = new JFrame();
                    frame.setTitle("Draw Demo");
                    frame.add(draw, BorderLayout.CENTER);
                    frame.setSize(500, 300);
                    frame.setLocationRelativeTo(null);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.getContentPane().setBackground(Color.WHITE);
                    frame.setVisible(true);                new Thread()
                    {
                        int i = 0;                    public void run()
                        {
                            while(i < 10)
                            {
                                try
                                {
                                    sleep(1000);
                                    i++;
                                }
                                catch(InterruptedException e)
                                {
                                    e.printStackTrace();
                                }
                            }                        draw.setColor(Color.GREEN);
                            draw.setFont(new Font("Courier New", Font.BOLD, 20));
                        }
                    }.start();
                }
            });
        }    public DrawPane()
        {
            super();
            init();
        }    public void paintComponent(Graphics g)
        {
            super.paintComponent(g);        for(Draw draw: drawList)
            {
                draw.draw(g);
            }        if(drawing)
            {
                g.drawString(endX + "," + endY, endX, endY);
                g.drawLine(startX, startY, endX, endY);
            }
        }    private void init()
        {
            addMouseListener(new MouseL());
            addMouseMotionListener(new MouseMotionL());
            addComponentListener(new ComponentL());
            setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
        }    public Color getColor()
        {
            return color;
        }    public void setColor(Color color)
        {
            this.color = color;
        }    public Font getFont()
        {
            return font;
        }    public void setFont(Font font)
        {
            this.font = font;
        }    private class MouseL extends MouseAdapter
        {
            public void mousePressed(MouseEvent e)
            {
                startX = e.getX();
                startY = e.getY();
                drawList.add(new Text(font, color, startX, startY));
                repaint();
            }        public void mouseReleased(MouseEvent e)
            {
                drawing = false;
                endX = e.getX();
                endY = e.getY();
                drawList.add(new Line(font, color, startX, startY, endX, endY));
                drawList.add(new Text(font, color, endX, endY));
                repaint();
                startX = 0;
                startY = 0;
                endX = 0;
                endY = 0;
            }
        }    private class MouseMotionL extends MouseMotionAdapter
        {
            public void mouseDragged(final MouseEvent e)
            {
                drawing = true;
                endX = e.getX();
                endY = e.getY();
                repaint();
            }
        }    private class ComponentL extends ComponentAdapter
        {
            public void componentResized(final ComponentEvent e)
            {
                repaint();
            }
        }
        
        private class Line implements Draw
        {
            private int orgX = 0;        private int orgY = 0;        private int endX = 0;        private int endY = 0;        private Font font;        private Color color;        public Line(Font font, Color color, int orgX, int orgY, int endX, int endY)
            {
                this.orgX = orgX;
                this.orgY = orgY;
                this.endX = endX;
                this.endY = endY;
                this.color = color;
                this.font = font;
            }        public void draw(Graphics g)
            {
                g.setFont(font);
                g.setColor(color);
                g.drawLine(orgX, orgY, endX, endY);
            }
        }    private class Text implements Draw
        {
            private int orgX = 0;        private int orgY = 0;        private Font font;        private Color color;        public Text(Font font, Color color, int orgX, int orgY)
            {
                this.orgX = orgX;
                this.orgY = orgY;
                this.color = color;
                this.font = font;
            }        public void draw(Graphics g)
            {
                Graphics2D g2d = (Graphics2D)g;
                g2d.setStroke(new BasicStroke(2));
                g.setFont(font);
                g.setColor(color);
                g.drawString(orgX + "," + orgY, orgX, orgY);
            }
        }    private interface Draw
        {
            public void draw(Graphics g);
        }
    }
      

  4.   

    报的是空指针错误,问题出在这个方法里面
    public void mouseReleased(MouseEvent e) 

      DrawLine.endX=e.getX(); 
      DrawLine.endY=e.getY(); 
      DrawLine.graphics.drawLine(DrawLine.starX,DrawLine.starY,DrawLine.endX,DrawLine.endY); 
     
      

  5.   

    哈哈错误被我找到了 。
    真正的错误在这一行:DrawLine.graphics.drawLine(DrawLine.starX,DrawLine.starY,DrawLine.endX,DrawLine.endY); 
    因为你声明了graphics但是你没有初始化这个东西,当然是NullPointerException咯。
    解决方法是 使用
    public void paint( Graphics g){
      g.drawLine(DrawLine.starX,DrawLine.starY,DrawLine.endX,DrawLine.endY); 
    }
    然后在你的事件中使用
    repaint();
    HOHO很久没有看到用JB开发界面的,鼓励下你。