经过了一两周时间,我终于完成了对画图板的学习和编写。当然这还只是画图板的一个雏形,实现的功能和Windows的相比差的老远了,简直是一个天上一个地下。和其他班上其他同学相比,我的画图板可能也是最差的一个了。
在此我先简单介绍一下我的画图板:
主界面:
(唉,够简单吧...我都不好意思传滴)
package 画图板v2;
import java.awt.Color;
import java.awt.event.ActionEvent;
import 画图_形状包.Shape;
/**
* 画图板界面
* @author 滕捷
*
*/
public class MydrawUI extends javax.swing.JFrame{
// 共四部分:一、属性, 二、主程序, 三、初始化函数, 四、属性方法
// 一、属性
private Color color = Color.black;//默认初始颜色为黑色
private NetJavaImp<Shape> shplist = new NetJavaImp<Shape>();//定义并创建一个队列的实现类
private java.awt.Graphics g;//定义一个画布
// 二、主程序
/**
* 程序入口
* @param args
*/
public static void main(String args[]){
//创建一个窗口对象
MydrawUI ui = new MydrawUI();
//初始化窗口
ui.initDrawUI();
}
// 三、初始化窗口函数,在主程序中被调用
/**
* 初始化窗口函数
*/
public void initDrawUI(){
//设置窗口标题
this.setTitle("我的第一个画图板");
//设置窗口大小
this.setSize(600, 500);
//设置窗口布局
java.awt.FlowLayout fl = new java.awt.FlowLayout();
this.setLayout(fl);
//创建颜色选择按钮
javax.swing.JButton bt_color = new javax.swing.JButton("选择颜色");
//创建按钮组
javax.swing.ButtonGroup bgroup = new javax.swing.ButtonGroup();
//创建单选按钮
javax.swing.JRadioButton line = new javax.swing.JRadioButton("直线");
javax.swing.JRadioButton arc = new javax.swing.JRadioButton("圆弧");
javax.swing.JRadioButton rect = new javax.swing.JRadioButton("矩形");
javax.swing.JRadioButton srect = new javax.swing.JRadioButton("圆角矩形");
javax.swing.JRadioButton oval = new javax.swing.JRadioButton("圆形");
//设置按钮动作命令
line.setActionCommand("直线");
arc.setActionCommand("圆弧");
rect.setActionCommand("矩形");
srect.setActionCommand("圆角矩形");
oval.setActionCommand("圆形");
//将单元按钮添加到按钮组上
bgroup.add(line);
bgroup.add(arc);
bgroup.add(rect);
bgroup.add(srect);
bgroup.add(oval);
//将组件添加到窗口
this.add(bt_color);//颜色按钮
this.add(line);//直线选项
this.add(arc);//弧线选项
this.add(rect);//矩形选项
this.add(srect);//圆角矩形选项
this.add(oval);//圆选项
//默认选中直线
line.setSelected(true);
//设置窗体不可变大小
this.setResizable(false);
//窗口剧中
this.setLocationRelativeTo(null);
//默认关闭窗口退出程序
this.setDefaultCloseOperation(3);
//显示窗口
this.setVisible(true);
//从窗体上获取画布
g = this.getGraphics();
//创建并添加动作监听器到颜色选择按钮
bt_color.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
ColorSelecter();
}
});
//创建一个鼠标监听器,参数分别为:画布,按钮组,储存元素的队列,MydrawUI类当前的对对象
Mydrawlistener ml = new Mydrawlistener(g,bgroup,shplist,this);
//给窗口添加鼠标监听器
this.addMouseListener(ml);
}
// 四、属性方法
/**
* 1、重写父类绘制窗体的方法
*/
public void paint(java.awt.Graphics g){
//调用父类中的paint方法来绘制窗体
super.paint(g);
//调用重新绘制的方法——通过取出存放在队列中的形状来实现的
redraw(this.g);
}
/**
* 2、将队列中储存的元素重新返回窗体的方法
*/
public void redraw(java.awt.Graphics g){
//可以用这个进行测试:System.out.println("形状个数:"+shplist.size());
for(int i=0;i<shplist.size();i++){
Shape shapes = shplist.get(i);
shapes.draw(g);
}
}
/**
* 3、颜色选色器的方法
*/
public void ColorSelecter(){
this.color = javax.swing.JColorChooser.showDialog(null,"请选择颜色",java.awt.Color.black);
}
/**
* 4、得到所选颜色的方法
*/
public Color getColor(){
return color;
}
}
功能一:能够通过画板上的图形单选按钮选择所要画的图形,如直线,矩形,圆角矩形,弧形,圆形或椭圆。
以圆角矩形作为代表:
package 画图_形状包;
import java.awt.Color;
import java.awt.Graphics;
public class RoundRectImp extends Shape{
//构造器重载
public RoundRectImp(int x1,int y1,int x2,int y2,Color color){
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
this.color = color;
}
//设置颜色及画图的方法
public void draw(Graphics g){
g.setColor(color);
g.drawRoundRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1),20 ,20 );
}
}
功能二:可实现图形颜色的选择
以上就是我的画图板总的效果了....真的太烂了,我自己都看不下去了...
个人总结:
一、以前常听老师强调要注重动手实践,什么实践出真知....但真正执行起来,我总是停留在理论阶段,以为看懂了就OK了,也懒得写了,而在自己动手做起来时,才发现自己其实根本就没弄明白所学的,或者说是在很多细节上自己无法处理。其实我并不否认看的效果,但我发现光看看其实只能在宏观上把握某个东西,也就是整体框架,而要完完整整的做出一个东西出来,光有框架是没有用的,还要有细节的填充。而我缺乏的正是这些细节内容,一些只有通过操作—即写代码才能真正的感受到和学到的东西。这也是我在后面的学习中需要特别注意的地方。
二、撇开画图板的效果,虽然很糟糕,但在学习的过程中,我真的学到了很多。如:画图板的重绘;怎样在各种类之间进行传值;类的整体框架应该怎么写,那些地方该用到内部类,哪些又不行;程序运行时出现的空指针是怎么回事;怎么在jdk1.6.CHM中找到自己想要的内容;怎样创建和运用队列,队列与数组各自的优缺点及联系。这些东西,我想光从书上看是远远不够的,自己写出来后不仅理解了更加深了记忆,真的知道斌哥要重新写画图板的真正用意了。
以上就差不多是我个人对画图板学习阶段的总结了。总结的很少,我想根本原因还是我前一段时间沉迷于一个游戏,没花什么时间在学习上。从今天起我决定金盆洗手,回归正道,....真正去做自己应该做的事!
在此送大家一句名言共勉:
stay hungry,stay foolish.(求知若饥,虚心若愚。)
——Jobs(乔布斯)
- 大小: 12.6 KB
- 大小: 38.3 KB
- 大小: 56.3 KB
- 大小: 40.8 KB
分享到:
相关推荐
java画图板java画图板java画图板
NULL 博文链接:https://xiaoyjj.iteye.com/blog/1702155
用java实现的windows画图板的简单模式,对于java初学者的事件触发器学习有很好的帮助。。。
java+swing+画图板Java实用源码整理learns
JAVA实现简单的画图板JAVA实现简单的画图板JAVA实现简单的画图板JAVA实现简单的画图板
画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...
利用Java写的简易画图板,包括直线、铅笔、圆形、矩形、橡皮以及修改颜色、线形大小和虚实。
java swing 实现的仿照win的画图板,欢迎交流学习
简易画图板。有基本形状绘制,加铅笔和橡皮,可撤销清除。可保存打开。
JAVA课程设计-画图板(含文档、源码)
基于JAVA语言的画图板,代码齐全,能够运行
一个用Java实现的画图板程序~一个用Java实现的画图板程序~一个用Java实现的画图板程序~一个用Java实现的画图板程序~
Java画图板Java画图板Java画图板Java画图板Java画图板
java 画图板 课程设计
java大作业--画图板。可以绘图(包含铅笔工具及多种形状)、调色、调节笔头粗细和形状、橡皮、吸管、保存图片、打开图片、剪切、复制、粘贴、撤销。
JAVA课程设计-画图板(含文档、源码)源码整理
用java写的画图板程序,其中包括话曲线,直线,圆,等等基本的功能。
java课程设计的一个题目。本程序可以画各种函数曲线,功能有: 1.新建、打开、保存画图 2.多种方式输入函数作图 3.可设置画笔颜色、大小 4.可以放大、缩小 5.可以移动坐标和图像 6.实时显示鼠标经过的坐标 jar使用:...
画图板应用程序,基于Java编写而成,可以实现windows下画图板相似功能