如何利用java创建一个简单的画图板项目

这篇主要是对如何创建一个简单的画图板功能进行简述。

界面开发

想要创建一个画图板,首先要进行窗体的创建,这里要用到java的两个包,java.awt以及javax.swing。首先我们利用JFrame类创建一个窗体对象,再对其进行属性设置。对窗口可视化,使其在屏幕上显示。该部分代码如下:

import javax.swing.JFrame;

public class DrawPad {

	public static void main(String[] args) {
		
		DrawPad drawPad=new DrawPad();
		drawPad.initui();
	}
	
	public void initui() {
		
		//创建窗口
		JFrame dp=new JFrame("画图板");
		
		//设置窗口属性
		dp.setSize(1200,800);
		dp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		java
		//窗体可视化
		dp.setVisible(true);

绘制工具添加

然后我们需要在界面上添加一个绘制工具,也就是俗称的“画笔”,每个界面都有属于自己的绘制工具,由于此处只涉及到一个界面,以此只用定义一个界面的“画笔”即可,此处,我们用到java.awt中的Graphics类创建一个画笔对象,再将“画笔”对象进行赋值,也就是将 “画笔” 与 “画图板” 界面进行关联。

//画笔
		Graphics g=dp.getGraphics();

划重点:监听器添加(鼠标、按钮响应)

要实现像画图板一样的功能,就需要是界面能够对鼠标的点击、释放的操作进行响应,此处需要添加一个 “鼠标监听器”, 有时候不光需要界面对鼠标操作的响应,也需要程序在我们选择不同的按钮时对我们选择的操作进行响应,因此监听器中还要添加一个“行为监听器”。
鼠标监听器的原理比较简单,主要就是在鼠标进行点击、按下、释放、进入、退出等操作后进行一系列操作。此处 画图 主要是在鼠标按下和释放时获取两个位置的坐标,以此确定图形的位置和大小。
如果需要添加按钮来选择图形的形状,就需要先在行为监听器中获取按钮的文字,对按钮的功能进行判断后再进行不同的图形绘制。具体代码如下:

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class DrawListener implements MouseListener,ActionListener{

	int x1,y1,x2,y2;
	Graphics g;
	String btustr=new String();
	//点击按钮后的响应
	public void actionPerformed(ActionEvent e) {
		btustr=e.getActionCommand();
	}
	
	int compare(int x,int y) {
		return x<y?x:y;
	}

	//鼠标响应
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO 自动生成的方法存根
		
		System.out.println("点击");
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO 自动生成的方法存根
		x1=e.getX();
		y1=e.getY();
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO 自动生成的方法存根
		x2=e.getX();
		y2=e.getY();
		
		//判断图形
		if(btustr.equals("直线")) {
		g.drawLine(x1, y1, x2, y2);;
		}else if(btustr.equals("圆形")){
		g.drawOval(compare(x1,x2), compare(y1,y2), Math.abs(x1-x2),Math.abs(y1-y2));
		}else if(btustr.equals("矩形")) {
		g.drawRect(compare(x1,x2), compare(y1,y2), Math.abs(x1-x2),Math.abs(y1-y2));
		}
		
		
		}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO 自动生成的方法存根
		
		System.out.println("进入");
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO 自动生成的方法存根
		
		System.out.println("退出");
	}

}

由于用到了监听器,因此需要在画图板类中将 “画图板界面” 和 “鼠标监听器” 进行关联,也需要将按钮与行为监听器进行关联。最后将两个类中的画笔进行联系,代码如下:

DrawListener dl=new DrawListener();
		
		dp.addMouseListener(dl);
		line.addActionListener(dl);
		Rect.addActionListener(dl);
		Roun.addActionListener(dl);
		
		dl.g=g;