java---画板

 

 仿XP画图板

这个画板现在可以实现的功能包括话各种图形、铅笔、喷漆、刷子、橡皮、吸管取色这些。下面就来一步步分析下这个画板是怎么实现的吧! 

一、界面的生成

      大体分析一下一个画图板界面可以分成那些部分:整体的一个大窗体,处于最顶部的一个菜单栏,左侧的工具栏,中间空白的画图纸,下部的颜色选择器以及底部有一条帮助提示栏。最早我所做的画图板把这些生成界面的相关代码都给写在了同一个类里面,其中包括各种组件的添加和布局,那样写的话就会显得十分的乱,想要修改某一部分就要在里面找上好久。后来这个最新弄得画板在生成这个界面的时候采用的方法是每一部分的组件单独成一类,在每一个类中写一个初始化的方法,并且重载他的构造方法,这样只要在主类中调用他的构造方法再合理的安排一下布局就可以了。这样做每一部分组件单独成类显得十分清晰,但也有一定的不足,就是在这些类与后来定义的监听器类之间相互传递参数的时候就会很麻烦,经常传参数传的自己头昏脑胀的。。但肯定没有万全的方法吧,看自己习惯怎么弄了~~

各个组件部分是怎么生成的在这里我就不一一列出来了,这儿就把左侧工具栏部分的生成用代码表示一下,其它部分都相似的。

 

Java代码   package db.xyz.DrawBoardTool; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JPanel; import db.xyz.Listener.DrawListener; import db.xyz.Listener.HelpListener; public class DrawBoardTool extends JPanel{ DrawListener dListener; public DrawBoardTool(DrawListener dListener){ this.dListener = dListener; unitTools(); } public void unitTools(){ //设置工具栏布局为流式布局 this.setLayout(new FlowLayout()); //创建一个窗体对象 JPanel panel = new JPanel(); //设置布局为网格布局 panel.setLayout(new FlowLayout()); panel.setPreferredSize(new Dimension(70,300)); //数组存放图片位置 String [] tool = {"image/line.png","image/pencil.png","image/rect.png","image/frect.png","image/oval.png","image/foval.png","image/zhex.png","image/erase.png","image/penqi.png","image/brush.png","image/roundrect.png","image/xiqu.jpg"}; //数组存放控制命令 String [] command = {"line","pencil","rect","frect","oval","foval","zhex","erase","penqi","brush","roundrect","xiqu"}; HelpListener dl = new HelpListener(); for(int i = 0;i" wmode="transparent">  收藏代码
  1. "font-size: medium;">package db.xyz.DrawBoardTool;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.Color;  
  5. import java.awt.Dimension;  
  6. import java.awt.FlowLayout;  
  7. import javax.swing.ImageIcon;  
  8. import javax.swing.JButton;  
  9. import javax.swing.JPanel;  
  10.   
  11. import db.xyz.Listener.DrawListener;  
  12. import db.xyz.Listener.HelpListener;  
  13.   
  14.   
  15.   
  16. public class DrawBoardTool extends JPanel{  
  17.     DrawListener dListener;  
  18.       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值