import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;public class DrawLine extends JFrame
{
public DrawLine()
{
this.addMouseListener(new MouseAdapter()
{
      public void mousePressed(MouseEvent e)
      {
         int x1,y1;
         x1 = e.getX();
         y1 = e.getY();
      }
      public void mouseReleased(MouseEvent e)
      {
         int x2,y2;
         x2 = e.getX();
         y2 = e.getY();
         getGraphics().drawLine(x1,y1,x2,y2);//此处getGraphics()为什么不对呢??
      }
}
);
}
public static void main(String[] args)
{
DrawLine fm = new DrawLine();
fm.setSize(300,300);
fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fm.setVisible(true);
}
}

解决方案 »

  1.   

    /**
    *注意变量的做用域,x1,y1,在mouseReleased()里的嘛.
    */
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.awt.image.*;public class DrawLine extends JFrame
    {
    int x1,y1;
    public DrawLine()
    {
    this.addMouseListener(new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {
    x1 = e.getX();
    y1 = e.getY();
    }
    public void mouseReleased(MouseEvent e)
    {
    int x2,y2;
    x2 = e.getX();
    y2 = e.getY();
    getGraphics().drawLine(x1,y1,x2,y2);//此处getGraphics()为什么不对呢??
    }
    }
    );
    }
    public static void main(String[] args)
    {
    DrawLine fm = new DrawLine();
    fm.setSize(300,300);
    fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fm.setVisible(true);
    }
    }