发布时间:2025-12-09 20:31:47 浏览次数:7
刚学习Java的小伙伴肯定觉得在控制台输入、打印的操作low爆了吧,那么你可以试一试画图板项目。完成这个项目之后,你可以制作一个属于自己的画图板,来取代电脑自带的画图板
通过这个项目,你可以学习到GUI的基本知识以及监听控制界面的知识
制作界面前,我们需要认识awt包与swing包,他们都是图形界面工具包,为我们提供了各种组件来制作界面
常见的布局器有
这里我们选择流式布局器,让按钮在界面上均匀摆放
frame.setLayout(new FlowLayout());要制作画图板,那么按钮肯定不能少,我们要通过点击按钮来切换绘制的图形
所以还是用到了swing包下的JButton组件
对按钮的美化操作请参考按钮美化
界面准备好之后,我们就要开始对于界面的各种组件的监听以及用户动作的监听,这样用户与界面才能够有交互
新建一个类FrameListener,用于对界面进行监听
监听器类要实现监听就要实现不同的监听器接口
注意:实现一个接口,就必须实现接口中的所有方法
我们需要在界面可视化之后获取画笔才能在界面上进行绘制
Graphics g = frame.getGraphics();//界面可视化之后获取界面的画笔我们可以创建一个传画笔的构造器,使得监听器可以对界面进行绘制
x1,y1:按下时的坐标
x2,y2:释放时的坐标
GUI的坐标系采用的时笛卡尔坐标系,原点在左上角
前两个参数为矩形的左上角坐标,后两个参数为矩形的宽,高
注意:纵坐标小的点才是矩形的左上角
绘制原理与矩形同理
g.drawOval(y1>y2?x1:x2,y1>y2?y1:y2,Math.abs(x2-x1),Math.abs(y2-y1));实现铅笔小效果,需要实现MouseMotionListener与MouseListener两个接口
@Overridepublic void mouseReleased(MouseEvent e) {isPressed = false;}@Overridepublic void mouseDragged(MouseEvent e) {//当选择画直线时,鼠标拖拽,每次都记录上一个点,下一个点与上一个点相连if(strnum== Message.PENCILE){if (!isPressed) {x1 = e.getX();y1 = e.getY();isPressed = true;} else if (isPressed) {x2 = e.getX();y2 = e.getY();g.drawLine(x1,y1,x2,y2);x1 = x2;y1 = y2;}}}这样我们在监听的时候,只需要通过参数构造Shape,然后调用drawShape方法进行绘制就可以了,这也就解决了保存图形信息的问题
我们可以在监听器类中创建ArrayList来保存Shape
在继承了JFrame的界面类中重写JFrame的paint方法,遍历ArrayList进行绘制即可
看到了这里,相信大家对GUI充满了兴趣,那么就敲动你的代码,写出属于你自己的画图板吧!
对以上内容有疑问的小伙伴也欢迎在评论区讨论哦