Java 编写的简易画图板

本文介绍如何使用Java创建一个简单的画图板应用。通过继承JFrame类并利用MouseListener监听器,实现了基本的绘图功能。文章提供了代码示例,帮助初学者理解窗口创建及鼠标事件处理。

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

用Java编写的简易访xp系统的画图板

首先得建立一个窗口,也就是画图的位置,我试了两种方法。

第一种,定义一个类,在类里面建立JFrame对象 通过对象来进行窗口的建立。

第二种,定义一个类,继承JFrame,可以通过this来调用当前建立的窗口,最后选择了第二种方式窗口代码如下

public class MyFrame extends javax.swing.JFrame{
//显示界面的方法
public void showUI(){
//设置窗口大小
this.setSize(300,400);
//设置标题
this.setTitle("画图板");
//设置窗口显示位置居中
this.setLocationRelativeTo(null);
//设置窗体关闭时的操作
this.setDefaultCloseOperation(3);
//创建一个流式布局对象
java.awt.FlowLayout layout=new java.awt.FlowLayout();
//设置窗体的布局
this.setLayout(layout);

//获取当前窗口的画布对象,必须是可见之后
final java.awt.Graphics g = this.getGraphics();
java.awt.event.MouseListener mouse_listener = new MyMouseListener(g);
//创建监听
this.addMouseListener(mouse_listener);

//可见
this.setVisible(true);

}

}

还要在窗口中创建画布,要不然不能在里面画图

画布的创建代码如上面红色字体,注意:获取当前窗口的画布对象,必须是可见之后。

因为所有的 监听器都是接口类型的,所以要把里面的方法都具体化。MouseListener里面有五种方法。不清楚的可以自己去查api

我的代码部分如下

//鼠标事件,实现MouseListener
public class MyMouseListener implements java.awt.event.MouseListener{
//定义坐标
int x1,y1,x2,y2;
//定义画布
java.awt.Graphics g;
//定义构造函数,接受传过来的画布
public MyMouseListener(java.awt.Graphics gr){
g = gr;
}

public void mouseClicked(java.awt.event.MouseEvent e){
//鼠标点击时调用

}
public void mouseEntered(java.awt.event.MouseEvent e){
//鼠标进入到组件是调用
}
public void mouseExited(java.awt.event.MouseEvent e){
//鼠标离开组件是调用
}
public void mousePressed(java.awt.event.MouseEvent e){
//鼠标按键在组件上按下时调用
x1 = e.getX();
y1 = e.getY();
}
public void mouseReleased(java.awt.event.MouseEvent e){
//鼠标按钮在组件上释放时调用
x2 = e.getX();
y2 = e.getY();
//画直线
//g.drawLine(x1,y1,x2,y2);
//画矩形
//g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));

}

}

通过方法参数的传送来实现两个类中数据的传送

当然此方法有很多不足之处,大家自己去试一试。关于解决方法下次会给出。

大致就这些,希望能给新手们一点点帮助,当然也希望大家支持。


1. 画板UI设计(总体布局) (1)创建窗体并设置相关属性; (2)给整个窗体添加一个中间容器用来覆盖整个窗体; (3)设置边框布局,因为整个画板大致为左边部分,中间部分,菜单栏三个部分,用边框布局比较合适; (4)给窗体添加左面板,中间面板; (5)给左面板添加按钮,并设置按钮图片和效果; (6)给左面板添加左子面板,用来存放颜色按钮; 2.画板功能设计 (1)给左画板中的按钮组中的每个按钮添加鼠标监听器; (2)点击不同按钮,绘制不同的图形; (3)给左子面板中的每个颜色按钮添加鼠标监听器; (4)根据下面板中选中的颜色按钮,来获取按钮的背景颜色,并将该颜色设置成画笔的颜色; (5)铅笔功能 1、铅笔是鼠标拖动时画的线,所需要实现鼠标移动监听器,我们采用一个类来实现多个接口; 2、添加新的鼠标监听器类; 3、在鼠标移动时间中实现画笔的逻辑(其实就是绘制直线,鼠标每移动一个像素,就会触发移动事件,通过移动事件获取鼠标的坐标,与上一次移动的坐标连线就可以了; (6)刷子功能 刷子其实就是加粗的画笔,画出来的直线更粗,这里需要用到Graphic2D画笔来设置画笔的粗细。 (7)橡皮擦功能 橡皮擦就是把画笔颜色设置成相同的背景颜色就可以了,拖动鼠标时进行擦除,所以在鼠标拖动事件中编写。 (8)喷桶功能 1、定位方法:鼠标拖动事件实现; 2、随机数生成:Random; 3、实现原理,在鼠标拖动附近绘制很多的原点; 3. 画板的保存和重绘的设计 (1)给我们的画板添加菜单条、菜单以及菜单项 (2)给每个菜单项添加监听器 (3)点击不同的菜单项实现相应的功能 (4)图形保存功能:利用对象输出流,将容器对象写入文件; (5)打开图形功能:利用对象输入流,将容器对象读入,然后将容器里面的图形对象在画板上绘制出来 (6)新建文件功能:新建文件,将画板上绘制的内容清空(清空之前可以确认是否需要进行保存)清屏(重绘)功能依次方法; (7)文件保存格式为BMP格式; (8)文字功能:读取文本框中的文本并打印到屏幕鼠标的相应的响应位置,传入输入的文字大小的参数,以此来改变文字的大小; 4.弹泡泡功能的设计 根据Java多线程来实现弹泡泡功能;泡泡的位置颜色随机出现,并且做到碰到边框会变色;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值