经过了一两周时间,我终于完成了对画图板的学习和编写。当然这还只是画图板的一个雏形,实现的功能和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学习过程中,创建一个简单的画图板是一个经典的练习项目,它可以帮助我们深入理解图形用户界面(GUI)的构建和事件处理机制。本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1...
总结来说,这个【Java画图板系统】项目展示了如何使用Java GUI技术来创建一个交互式的绘图应用。通过Eclipse IDE,开发者可以方便地管理、编译和调试代码,确保在不同JDK版本下的一致性。对于学习和理解Java GUI编程...
总结来说,《Java画图板》是一款集实用性和教学性于一体的软件,它结合了Java编程的理论与实践,为用户提供了一个简洁易用的图形绘制平台,同时也为学习Java语言的学生提供了一个良好的实践平台。通过设计和实现这样...
在Java编程语言中,画图板(Canvas)是图形用户界面(GUI)开发的一个关键组件。它是Java AWT(Abstract Window Toolkit)库的一部分,用于在窗口上绘制图形。Canvas类继承自Component,允许程序员直接在屏幕上进行...
总结来说,“java画图板代码”项目涵盖了Java GUI编程的多个方面,包括组件使用、图形绘制、事件处理、用户交互以及可能的图像操作。通过学习和理解这段代码,开发者可以深化对Java图形用户界面编程的理解,并能应用...
总结起来,"小小画图板"项目展示了Java GUI编程的基本原理和`Graphics2D`的强大绘图能力。开发者不仅需要掌握Swing组件的使用,还要理解图形上下文的概念,以及如何通过事件监听来响应用户的输入。这个项目对于学习...
总结,实现一个画图板涉及多个Java Swing组件和事件处理机制的理解。通过这个过程,开发者可以深入学习GUI编程,以及图形绘制和交互设计的基本原理。对于初学者,这是一个很好的练习项目,能帮助他们更好地掌握Java...
深入学习这些内容,不仅可以帮助开发者构建自己的画图板应用,还可以为理解和开发其他GUI工具提供宝贵的经验。同时,对于软件工程的学生和从业者来说,这也是提高编程技能和理解用户界面设计的好机会。
通过这个基于Java Applet的简易画图程序,我们可以学习到Java事件处理机制,理解如何响应用户的鼠标操作,并在画布上实时绘制图形。虽然现代Web开发中Java Applet的使用已经不多,但这个示例仍然是学习Java图形界面...
总结来说,这个"画图板代码"项目涵盖了事件处理、图形绘制、图形状态管理和用户交互设计等多个核心编程概念,是学习和实践GUI编程的一个良好起点。通过深入研究和实践,开发者可以进一步提升在图形用户界面开发领域...
在本文中,我们将深入探讨如何使用...总结起来,Java实现的画板程序涉及到GUI设计、图形绘制、事件处理、文件操作等多个核心Java技术。通过学习和实践这个项目,开发者可以加深对Java Swing的理解,提升GUI编程能力。
### Java面向对象课程设计报告——画图板毕业设计知识点总结 #### 一、课程设计概述 本课程设计旨在让学生深入理解面向对象程序设计的基本概念和技术,通过实践项目提高学生的编程能力。具体而言,本设计围绕“画图...
Java AWT库是Java平台标准版(Java SE)的一部分,用于构建图形用户...这个简单的画图器项目是一个很好的学习Java GUI编程和图形处理的实践案例,通过扩展它可以实现更多高级功能,如填充颜色、撤销/重做、图层管理等。
总结来说,这个"画图工具JAVA源代码"项目涵盖了Java基础、GUI编程、事件处理、Java 2D绘图以及文件I/O等多方面的知识。通过学习和研究这个项目,开发者不仅可以提升Java编程技能,还能了解如何创建一个实际的图形...
在本课程设计中,我们将设计一个基于JAVA的画板模拟画图工具,旨在帮助学生和开发者学习和实践JAVA编程语言。下面是本课程设计的详细说明和知识点总结: 课程设计目的 本课程设计的主要目的是设计一个基于JAVA的...
总结起来,使用Java实现一个画图工具涉及以下核心概念: - Swing GUI组件的使用,如`JFrame`和`JPanel` - `Graphics2D`类的图形绘制方法 - 事件监听器,如`MouseListener`和`MouseMotionListener` - 颜色和线型选择...
根据提供的文件信息,我们可以总结出以下关于 Java 画图程序的知识点: ### 1. Java AWT 和 Swing 组件 该程序使用了 Java 的 AWT(Abstract Window Toolkit)和 Swing 库来创建图形用户界面(GUI)。AWT 是 Java ...
本篇论文主要探讨的是利用Java编程语言设计并实现一个简易的画图板程序,旨在提供一个基础的图形绘制环境。在Java这个强大的编程平台上,学生可以学习并实践面向对象编程技术,提升软件开发能力。本文将详细介绍设计...
总结,这款基于Java的画图软件充分利用了Java GUI和图形处理能力,为用户提供了一个全面的图形编辑环境。通过学习和理解这些关键技术,开发者可以创建出更多功能丰富的图形应用,进一步拓宽Java在图形界面设计领域的...
### 刀疤鸭画图板源码解析与关键技术点 #### 软件简介 ...以上是对刀疤鸭画图板源码的关键知识点进行的总结与解析。通过深入理解这些内容,开发者可以更好地掌握该应用的工作原理和技术实现细节。