import java.awt.*;
import java.awt.event.*;
public class DrawLine extends Frame
{
int orgX;
int orgY;
int endX;
int endY;
Frame f=new Frame("DrawLine");
public static void main(String[] args)
{
//new DrawLine().init();
DrawLine d1=new DrawLine();
d1.init();
}
public void paint(Graphics g)
{
g.drawLine(orgX,orgY,endX,endY);
}
public void init()
{
f.setSize(500,350);
f.setBounds(100,100,500,350);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
                        {
                         public void windowClosing(WindowEvent e)
                         {
                         System.exit(0);
                         }
                        });
f.addMouseListener(new MouseAdapter()
                       {
                            //int orgX;
                            //int orgY;
                            public void mousePressed(MouseEvent e)
                            {
                             orgX=e.getX();
                             orgY=e.getY();
                            }
                            public void mouseReleased(MouseEvent e)
                            {
                             endX=e.getX();
                                    endY=e.getY();
                             Graphics g=f.getGraphics();
                             g.setColor(Color.red);
                             g.setFont(new Font("隶书",/*Font.ITALIC|*/Font.BOLD,20));
                                   //设置文本字体
                             //g.drawString(new String(orgX+","+orgY),orgX,orgY);
                                   //打印鼠标按下时的坐标文本
                             //g.drawString(new String(e.getX()+","+e.getY()),e.getX(),e.getY());
                                   //打印鼠标释放时的坐标文本   
                             g.drawLine(orgX,orgY,endX,endY);
                            }
                       });
}
}

解决方案 »

  1.   

    因为你定义的Frame f=new Frame("DrawLine");f 对象的问题。
    你定义的f对象是Frame,不是DrawLine对象,所以当然不会执行paint方法了。
    这样改试试:
    DrawLine f = null;//new Frame("DrawLine");

    public void init() {
            f = this;
            f.setSize(500, 350);
      

  2.   

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;public class DrawLine extends Frame {
    public static void main(String[] args) {
    // new DrawLine().init();
    DrawLine d1 = new DrawLine();
    d1.init();

    } int endX; int endY; //Frame f = new Frame("DrawLine"); int orgX; int orgY; public void init() {
    setSize(500, 350);
    setBounds(100, 100, 500, 350);
    setVisible(true);

    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    addMouseListener(new MouseAdapter() {
    // int orgX;
    // int orgY;
    public void mousePressed(MouseEvent e) {
    orgX = e.getX();
    orgY = e.getY();
    } public void mouseReleased(MouseEvent e) {
    endX = e.getX();
    endY = e.getY();
    repaint();
    //Graphics g =
    //g.setColor(Color.red);
    //g.setFont(new Font("隶书",/* Font.ITALIC| */Font.BOLD, 20));
    // 设置文本字体
    // g.drawString(new String(orgX+","+orgY),orgX,orgY);
    // 打印鼠标按下时的坐标文本
    // g.drawString(new
    // String(e.getX()+","+e.getY()),e.getX(),e.getY());
    // 打印鼠标释放时的坐标文本
    //g.drawLine(orgX, orgY, endX, endY);
    }
    });

    } public void paint(Graphics g) {
    Color c = g.getColor();
    g.setColor(Color.RED);
    g.drawLine(orgX, orgY, endX, endY);
    g.setColor(c);
    }
    }