如何利用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;