蓝杰学习02-画板V1.0

本文介绍了一种实现简单画板的方法,包括创建窗体、添加图形按钮和设置鼠标及动作事件监听器。通过代码示例展示了如何在Java中构建这样一个交互式的画板应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习了编写一个简单的画板
思路:
(1)先创建一个窗体(这里使用流布局方式),并设置鼠标事件监听器。同时创建一个事件监听类,实现鼠标事件监听接口和动作事件监听接口。
(2)再在窗体里面添加相应图形的按钮,比如直线、椭圆、矩形等,并设置动作事件监听器。
(3)在设置窗体可见之后,再设置监听器(事件监听类的对象)的画布对象。

具体代码如下:

1.画板界面类

import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;

public class DrawUI {
	//显示界面的方法
	public void showUI() {
		//创建窗体对象
		JFrame drawFrame = new JFrame();
		//设置窗体的属性
		drawFrame.setTitle("画图板V1.0");
		drawFrame.setSize(1500,900);
		drawFrame.setLocationRelativeTo(null);//位置居中
		drawFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//点击关闭会销毁窗体,但不会退出程序
		//设置布局为流式布局
		drawFrame.setLayout(new FlowLayout());
		
		//创建监听器的对象
		DrawListener drawListener = new DrawListener();
		//添加监听器
		drawFrame.addMouseListener(drawListener);
		
		//添加直线按钮
		JButton lineBtn = new JButton("直线");
		drawFrame.add(lineBtn);
		lineBtn.addActionListener(drawListener);
		
		//添加椭圆按钮
		JButton ovalbtn = new JButton("椭圆");
		drawFrame.add(ovalbtn);
		ovalbtn.addActionListener(drawListener);
		
		//添加矩形按钮
		JButton rectbtn = new JButton("矩形");
		drawFrame.add(rectbtn);
		rectbtn.addActionListener(drawListener);
		
		
		//设置窗体可见
		drawFrame.setVisible(true);
		
		//获取窗体的画布
		Graphics g = drawFrame.getGraphics();
		//设置监听器的画布对象
		drawListener.setGraphics(g);//调用drawListener类的setGraphics方法
	}
	
	
	//主方法
	public static void main(String[] args) {
		//创建窗体对象
		DrawUI ui = new DrawUI();
		//显示界面
		ui.showUI();
	}
}

2.监听器类

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{
	//画布
	private Graphics g ;
	//记录坐标
	int x1,y1,x2,y2;
	//用来保存图形类型信息
	String type = "";
	
	//点击按钮
	public void actionPerformed(ActionEvent e) {
		String action = e.getActionCommand();//返回与此动作相关的命令字符串
		//保存图形类型的信息
		type = action;
	}
	
	//设置画布的方法,在DrawUI类中传入的Graphics型参数
	public void setGraphics(Graphics arg) {
		g = arg;
	}
	
	public void mousePressed(MouseEvent e) {
		//记录按下鼠标的坐标
		x1 = e.getX();
		y1 = e.getY();
	}
	public void mouseReleased(MouseEvent e) {
		//记录松开鼠标的坐标
		x2 = e.getX();
		y2 = e.getY();
		//根据图形信息绘制相应图形
		if("直线".equals(type)) {
			//画线
			g.drawLine(x1, y1, x2, y2);
		}else if("椭圆".equals(type)) {
			//画椭圆
			g.drawOval(x1, y1, x2-x1, y2-y1);
		}else if("矩形".equals(type)){
			g.drawRect(x1, y1, x2-x1, y2-y1);
		}
		
	}
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值