首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

画夹制作

2012-12-26 
画板制作画板总结第一部分讲简易画板的制作(功能单一 只能实现画直线)用javax.swing.JFrame制作一个界面:

画板制作
画板总结
第一部分讲简易画板的制作(功能单一 只能实现画直线)
用javax.swing.JFrame制作一个界面:制作界面包含一些基本设置(
       //设置窗体名称
this.setTitle("画板");
//设置窗体大小
this.setSize(500, 500);
//设置关闭窗体时,并退出程序
this.setDefaultCloseOperation(3);
//设置窗体居中显示
this.setLocationRelativeTo(null);
        // 布局管理器
java.awt.FlowLayout f1 = new java.awt.FlowLayout();
this.setLayout(f1);
//设置窗体不可以最大化
this.setResizable(false);
//设置窗体可见[取得界面对象一定要在界面setVisible之后]
this.setVisible(true);

当鼠标点击界面时能够触发事件(要懂得学会使用监听器 监听器包括
>ActionListener:动作监听器,监听鼠标点击,回车按下等 >MouseListener:鼠标监听器,监听鼠标的各种动作)
这里主要介绍鼠标监听器(这里涉及到接口的使用 对于MouseListener的所有方法都要重写一遍,不过另外有一种做法,专有名词叫做“适配器设计模式”,就是对于MouseAdapter类的使用。举例:public class MyDrawListener extends java.awt.event.MouseAdapter 这样只需要重写我们需要的方法即可)
是关于对画图方法的原理解释
   对于画直线,用鼠标在建立的界面上点击两下,程序监听到两次行为的产生,记录下两点坐标,通过调用drawLine(x1,y1,x2,y2)方法,这就是传说中的两点确定一条直线
   至于画矩形 调用drawRact
   等等等等 还有很多方法 都在java.awt.Graphics
类中 可以自己去找
如果想改变一下所画线条的颜色 也很简单
只要在调用画线方法之前设置一下颜色就可以了
g.setColor(java.awt.Color.GREEN);

到此 一个简单的画板就完工了

下面要介绍的是比较麻烦一点的
中级画板
作为一个画板,当然不能只画一种图形,下面介绍可以画多种图形的画板,还可以改变颜色哦
在上面的基础上 在界面上设置一个颜色选择器
         // 选择颜色的按钮,点击后,弹出颜色选择器
javax.swing.JButton bu_color = new javax.swing.JButton("选颜色");
然后给这个按钮加上一个监听器,并且调用这个方法
// 给bu设置事件监听器
bu_color.addActionListener(new                                                                                           java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
showColorSelecter();// 调用颜色选择器的方法
}
private java.awt.Color color = java.awt.Color.BLACK;// 默认的颜色为黑色
下面介绍关于单选按钮的设置,单选按钮的调用涉及javax.swing.JRadioButton类,通过调用该方法在界面上设置三个单选按钮,你会发现屏幕上只有一个按钮,那那应该是因为你在前面忘了设置布局管理器,那样三个按钮会互相覆盖,这时还要将三个按钮放入一个包中,才能真正意义上实现单选
// 形状选择租对象,用来加入形状选择按钮
private javax.swing.ButtonGroup shapGroup = new javax.swing.ButtonGroup();
// 加入到组中
shapGroup.add(jr_line);
shapGroup.add(jr_ract);
this.shapGroup.add(jr_oval);
this.add(jr_line);
this.add(jr_ract);
this.add(jr_oval);
画板画完图像,然后的任务就是保存了,在这里我们只能将文件保存为一种仅本程序可识别的文件 关于储存主要涉及信息——位元的转换 其中包括文件I/O以及流的概念 我们可以将存储理解为把画板上的图像转换成计算机可识别的数据 这里要用到文件输出流
java.io.FileOutputStream fos=new java.io.FileOutputStream(path);
java.io.DataOutputStream dos=new java.io.DataOutputStream(fos);
不同的文件有着不同的文件格式 但是文件格式与文件扩展名无关 不同的文件格式即是数据在计算机硬盘中的不同的排列方式 一般文件由两部分构成,一部分是文件头信息,还有一部分就是文件的数据信息 这里我们要储存的是直线 矩形这些图形
文件头信息:只包含一个信息 就是总的形状的个数:
信息总形状个数
数据类型int
文件数据信息:
信息形状类型关键数据
数据类型byte直线(int,int,int,int)
保存之后的任务就是读取了
读取就是将存储的流程反过来进行
java.io.FileInputStream fis=new java.io.FileInputStream(path);
java.io.DataInputStream dis=new java.io.DataInputStream(fis);
将硬盘中的数据读取出来 根据文件头中int类型的数据读取出图形的形状 进而决定继续读取的int的个数,根据相应的存储特征将数据转换成为对应的图形 再将图形添加到数组中利用之前的重绘方法就可以把图形释放到界面上了

热点排行