import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
import java.util.Vector;
public class DrawLine1 extends Frame{
int X;
int Y;
int endX;
int endY;
Image oimg=null;//Image类
Graphics og=null;//Graphics抽象类,它的对象是用来传给paint()方法作为画笔的
public void paint(Graphics g){//这个对象g就相当于一个画笔。重写frame的paint方法,调用这个方法可以取出原来绘制的图形
if(oimg!=null)
g.drawImage(oimg, 20, 50, this);
}
public DrawLine1(){//创建构造方法,关闭按钮使用
setSize(400, 400);
setTitle("DrawLine");
setVisible(true);
Dimension d=this.getSize();
oimg=this.createImage(d.width, d.height);//创建一个图像
og=oimg.getGraphics();//og就是这个图像的画笔对象,画在oimg图片上?
addWindowListener(new WindowAdapter() {//创建一个匿名类重写适配器WindowAdapter类
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
this.addMouseListener(new MouseAdapter() {//根据获取的坐标点绘图
public void mousePressed(MouseEvent e){
X=e.getX();
Y=e.getY();
};
public void mouseReleased(MouseEvent e){//鼠标事件被触发开始画线
endX=e.getX();
endY=e.getY();
MyLine ml=new MyLine(X, Y, endX, endY);//画线对象,每次触发鼠标事件时就会重新再创建个对象
Graphics g=getGraphics();
g.setColor(Color.RED);
g.setFont(new Font(null, Font.BOLD, 30));
g.drawString( X+":"+Y, X, Y);
g.drawString( e.getX()+":"+e.getY(), e.getX(), e.getY());
g.drawLine(X,Y,e.getX(),e.getY());
og.setColor(Color.RED);
og.setFont(new Font(null, Font.BOLD, 30));
og.drawString( X+":"+Y, X, Y);
og.drawString( e.getX()+":"+e.getY(), e.getX(), e.getY());
og.drawLine(X,Y,e.getX(),e.getY());
};
});
}
public static void main(String[] args){
DrawLine1 mainFrame=new DrawLine1();//创建窗口对象,怎么绘图由其构造方法提供
}
}