萌新Java画图板的实现

Java画图板的实现

大家好,这是我的第一篇博客,具体内容呢就是如何用Java写一个画图板。
这个过程可以分为 一是画板界面的实现,二是画板的监听以及画图的实现。
首先我们需要用到JFrame这个类,先创建一个界面窗体,然后去设置这个窗体的各种属性,以及设置窗体可见。代码如下:

import javax.swing.JButton;

public class DrawUI {
	// 显示界面的方法
	public void shouUI() {
		// 创建一个窗体
		JFrame drawFrame = new JFrame();
		// 设置窗体的属性
		drawFrame.setSize(1200, 800);
		drawFrame.setLocationRelativeTo(null);
		drawFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 设置窗体的布局为流式布局
		drawFrame.setLayout(new FlowLayout());

		// 添加监听器
		DrawListener drawL = new DrawListener();
		// 给窗体添加监听器
		drawFrame.addMouseListener(drawL);

		// 存储所有信息的数组
		String[] typeArr = { "直线",  "三角形", "水滴", "方形", "圆形" };
		// 遍历数组
		for (int i = 0; i < typeArr.length; i++) {

			// 创建一些按钮
			JButton btn = new JButton(typeArr[i]);
			// 将按钮添加到窗体上
			drawFrame.add(btn);
			// 监听器
			btn.addActionListener(drawL);

		}

		// 设置可见
		drawFrame.setVisible(true);

		// 获取窗体的画布
		Graphics g = drawFrame.getGraphics();
		// 让监听器的画布,等于窗体的画布
		drawL.g = g;

	}

	// 主方法
	public static void main(String[] args) {
		// 创建一个界面对象
		DrawUI ui = new DrawUI();
		// 显示界面
		ui.shouUI();

	}
}

到这里呢,我们就已经创建了一个可视的窗体,接下来需要做的就是给这个窗体添加我们需要实现的画图功能。这里我们需要用到监听器这个东西。假设我们要画一条直线,一般是按紧鼠标拖动一段距离,松开鼠标的时候直线便会从起点处画到终点处,我们可以新建一个监听的类,在Buttonlistener类中我们实现MouseListener接口,这样子就可以实现对鼠标的监听了。这里需要注意的是:监听器是接口,所以我们要实现接口里的所有方法,具体操作可以选中MouseListener后,按F3查看源码,再复制到我们新创建的监听器的类里即可。具体代码如下:

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

public class DrawListener implements MouseListener, ActionListener {

	// 记录坐标的数字
	int startx, starty, endx, endy;
	// 画布
	Graphics g;
	// 记录图形信息
	String shapeType = "直线";

	public void setGraphics(Graphics g) {
		this.g = g;

	}

	// 按钮点击的时候,执行
	public void actionPerformed(ActionEvent e) {
		// 获取按钮上的信息
		String action = e.getActionCommand();
		// 记录按钮信息
		shapeType = action;
		System.out.println(shapeType);

	}

	public void mousePressed(MouseEvent e) {
		// 获取坐标
		startx = e.getX();
		starty = e.getY();

	}

	public void mouseReleased(MouseEvent e) {
		// 获取坐标
		endx = e.getX();
		endy = e.getY();

		System.out.println(shapeType);

		if ("直线".equals(shapeType)) {
			g.drawLine(startx, starty, endx, endy);
		} else if ("三角形".equals(shapeType)) {
			for (int i = 0; i < 256; i++) {

				// 画一个三角形
				Color TColor = new Color(100, 200, i);
				g.setColor(TColor);
				g.drawLine(startx, starty, endx, i + 200);
			}
		} else if ("水滴".equals(shapeType)) {
			for (int i = 0; i < 300; i++) {
				// 画一颗水滴
				Color c = new Color(180-i, 205, 230);
				g.setColor(c);
				g.fillOval(startx, starty, 200 - i, 200 - i);
			}
		} else if ("方形".equals(shapeType)) {
			g.setColor(Color.pink);
			g.fillRect(startx, starty, 200, 200);

		}else if("圆形".equals(shapeType)) {
			g.setColor(Color.YELLOW);
			g.fillOval(startx, starty, 150, 150);
		}

	}

	public void mouseClicked(MouseEvent e) {
	}

	public void mouseEntered(MouseEvent e) {
	}

	public void mouseExited(MouseEvent e) {
	}

}

至此我们就实现了画图板的一些简单功能。

(写的很粗糙,有什么问题欢迎大家私信与我交流学习。)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值