package com.mr
.draw;//类所在的包名
import javax.swing.JFrame; //引入窗体类
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
/*
* 画图主窗体
*/
public class DrawPictureFrame extends JFrame{
/**
* 构建方法
*/
BufferedImage image=new BufferedImage(570,390,BufferedImage.TYPE_INT_BGR);
Graphics gs=image.getGraphics(); //获取图像的绘图对象
Graphics2D g=(Graphics2D)gs;//将绘图对象转换为Graphics2D类型
DrawPictureCanvas canvas=new DrawPictureCanvas();//创建画布对象
Color foreColor=Color.BLACK;//定义前景色
Color backgroundColor=Color.WHITE;//定义背景色
int x=-1;
int y=-1;
boolean rubber=false;//橡皮标志变量
/*
* 构建方法,添加组件的初始化方法
*/
public DrawPictureFrame() {
setResizable(false); //窗体不能改变大小
setTitle("画图程序");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭则停止程序
setBounds(500,100,574,460);//设置窗口位置和宽高
init();//组件初始化
addListener();
}//DrawPictureFrame()结束
/**
* 程序运行方法
* @param args-运行时参数,本程序用不到
*/
private void init() {
g.setColor(backgroundColor);//用背景色设置绘图对象的颜色
g.fillRect(0, 0, 570, 390);//用背景色填充这个背景
g.setColor(foreColor);//用前景色设置绘图对象颜色
canvas.setImage(image);
getContentPane().add(canvas);//将画布添加到窗体容器默认布局的中部位置
}//intit()结束
private void addListener() {
//画板添加鼠标移动事件监听
canvas.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(final MouseEvent e) {
if(x>0 && y>0) {//如果x和y存在鼠标记录
if(rubber) {//橡皮标识为true,表示使用橡皮
g.setColor(backgroundColor);
g.fillRect(x, y,10, 10);
}
else {
g.drawLine(x, y,e.getX(),e.getY());
}//if结束
x=e.getX();
y=e.getY();
canvas.repaint();//更新画布
}
}
});
canvas.addMouseListener(new MouseAdapter()
{
public void mouseReleased(final MouseEvent arg0) {
x=-1;
y=-1;
}
});
}
public static void main(String args[]) {
DrawPictureFrame frame=new DrawPictureFrame();//创建窗体对象
frame.setVisible(true);//让窗体可见
}//main()结束
}//DrawPictureFrame类结束