`

画图板的小结

阅读更多

 到现在来说,我们也算是把初级的东西搞完,奥特曼打小怪兽,计算器的的简单应用,画图板。其实画图板是我花时间做的最长的的,因为一直要画那个多边形,自己一直想用文档中的方法做,结果越做越乱,改变策略后,用熊哥说的点与点画直线的方法,才做出来。虽然自己是学计算机的,曾经也学过c++,但是C语言的影响太深,每次的编程总会太注重面想过程,没有很快的理解面向对象。

      下面就是我做的简单的画板

 

	import java.awt.BorderLayout;
	import java.awt.Color;
	import java.awt.Dimension;
	import java.awt.Graphics;
	import java.awt.event.ActionEvent;
	import java.awt.event.ActionListener;

	import javax.swing.JButton;
import javax.swing.JColorChooser;
	import javax.swing.JFrame;
import javax.swing.JPanel;

	/**
	 * 定义一个画板界面类,该类继承自JFrame
	 * 
	 * @author xxj
	 * 
	 */
	public class DrawingBorder extends JFrame {

		/**
		 * 主函数
		 */
		public static void main(String[] args) {
			DrawingBorder db = new DrawingBorder();// 实例化对象
			db.initUI();// 调用初始化界面的方法
		}

		/**
		 * 初始化界面的方法
		 */
		public void initUI() {
			// 设置窗体的属性值
			this.setTitle("简单画板");
			this.setSize(new Dimension(600, 500));
			this.setDefaultCloseOperation(3);
			this.setLocationRelativeTo(null);

			// 调用创建北边面板的方法
			JPanel north = createNorthPane();
			this.add(north, BorderLayout.NORTH);// 添加到窗体的北边

			// 调用创建中间面板的方法
			JPanel center = createCenterPane();
			this.add(center, BorderLayout.CENTER);// 添加到窗体的中间

			this.setVisible(true);
			
			//获取事件源上的画布对象   如果窗体未可见,那么就无法获取到画布对象。
			Graphics g = center.getGraphics();
			//实例化事件处理类的对象,并且带入对应的参数
			DrawingListener dl = new DrawingListener(g,this);
			//给事件源添加鼠标监听器方法,绑定事件处理类的对象dl
			center.addMouseListener(dl);
			center.addMouseMotionListener(dl);
		}

		/**
		 * 事件处理类的对象
		 * 使用匿名内部类来实现ActionListener接口的具体实现
		 */
		private ActionListener al = new ActionListener(){
			//事件处理方法
			public void actionPerformed(ActionEvent e) {
				str = e.getActionCommand();//获取事件源的动作命令值。
				System.out.println("str = "+str);
			}		
		};
		//定义字符串属性,用来存储图形
		private String str = "Line";
		protected Color color;
		/**
		 * 获取图形属性值的方法
		 */
		public String getStr(){
			return str;
		}
		
		/**
		 * 创建北边面板的方法
		 * @param 返回创建好的JPanel对象
		 */
		public JPanel createNorthPane() {
			JPanel jp = new JPanel();// 实例化面板对象
			/**
			 * 接口不能用来实例化对象;但是在实例化接口对象时,带上一对大括号,就表示在实例化对象时,该接口有了具体的实现
			 * {}就是一个类,但是没有类名,而且是在另一个类中。 匿名内部类。
			 */
			jp.setPreferredSize(new Dimension(30, 80));// 设置大小
			ActionListener al = new ActionListener() {
				// 事件处理方法
				public void actionPerformed(ActionEvent e) {
					// 判断点击的是否是Color按钮
					if (e.getActionCommand().equals("Color")) {
						//弹出一个颜色选择界面,供用户选择颜色,选择好的颜色会返回给color
						color = JColorChooser.showDialog(null, "颜色选择器",
								Color.BLACK);
						System.out.println("color= "+color);
					} else {
						// 获取按钮上的文本内容
						str = e.getActionCommand();
						System.out.println("str = " + str);
					}
				}
			};

			// 定义数组,存储按钮上显示的文字
			String[] array = { "Line", "Rect", "Oval", "RoundRect","Polygon","Pencil", "Color", "Easer","Brush"};
			// 遍历数组,循环创建JButton对象
			
			for (int j= 0; j < array.length; j++) {
			
				// 创建按钮,按钮上显示的内容是数组中的元素
				JButton jbu = new JButton(array[j]);
				// 给事件源添加动作监听器方法,绑定事件处理类的对象al
				jbu.addActionListener(al);
               
				jp.add(jbu);
			}
			return jp;
		}


		/**
		 * 创建中间面板的方法
		 * @param 返回创建好的JPanel对象
		 */
		public JPanel createCenterPane() 
		{
			JPanel panel = new JPanel();// 实例化面板对象
			panel.setBackground(Color.WHITE);// 设置面板的背景色
			return panel;
		}
		
	}
		

	


 

	import java.awt.BorderLayout;
	import java.awt.Color;
	import java.awt.Dimension;
	import java.awt.Graphics;
	import java.awt.event.ActionEvent;
	import java.awt.event.ActionListener;

	import javax.swing.JButton;
import javax.swing.JColorChooser;
	import javax.swing.JFrame;
import javax.swing.JPanel;

	/**
	 * 定义一个画板界面类,该类继承自JFrame
	 * 
	 * @author xxj
	 * 
	 */
	public class DrawingBorder extends JFrame {

		/**
		 * 主函数
		 */
		public static void main(String[] args) {
			DrawingBorder db = new DrawingBorder();// 实例化对象
			db.initUI();// 调用初始化界面的方法
		}

		/**
		 * 初始化界面的方法
		 */
		public void initUI() {
			// 设置窗体的属性值
			this.setTitle("简单画板");
			this.setSize(new Dimension(600, 500));
			this.setDefaultCloseOperation(3);
			this.setLocationRelativeTo(null);

			// 调用创建北边面板的方法
			JPanel north = createNorthPane();
			this.add(north, BorderLayout.NORTH);// 添加到窗体的北边

			// 调用创建中间面板的方法
			JPanel center = createCenterPane();
			this.add(center, BorderLayout.CENTER);// 添加到窗体的中间

			this.setVisible(true);
			
			//获取事件源上的画布对象   如果窗体未可见,那么就无法获取到画布对象。
			Graphics g = center.getGraphics();
			//实例化事件处理类的对象,并且带入对应的参数
			DrawingListener dl = new DrawingListener(g,this);
			//给事件源添加鼠标监听器方法,绑定事件处理类的对象dl
			center.addMouseListener(dl);
			center.addMouseMotionListener(dl);
		}

		/**
		 * 事件处理类的对象
		 * 使用匿名内部类来实现ActionListener接口的具体实现
		 */
		private ActionListener al = new ActionListener(){
			//事件处理方法
			public void actionPerformed(ActionEvent e) {
				str = e.getActionCommand();//获取事件源的动作命令值。
				System.out.println("str = "+str);
			}		
		};
		//定义字符串属性,用来存储图形
		private String str = "Line";
		protected Color color;
		/**
		 * 获取图形属性值的方法
		 */
		public String getStr(){
			return str;
		}
		
		/**
		 * 创建北边面板的方法
		 * @param 返回创建好的JPanel对象
		 */
		public JPanel createNorthPane() {
			JPanel jp = new JPanel();// 实例化面板对象
			/**
			 * 接口不能用来实例化对象;但是在实例化接口对象时,带上一对大括号,就表示在实例化对象时,该接口有了具体的实现
			 * {}就是一个类,但是没有类名,而且是在另一个类中。 匿名内部类。
			 */
			jp.setPreferredSize(new Dimension(30, 80));// 设置大小
			ActionListener al = new ActionListener() {
				// 事件处理方法
				public void actionPerformed(ActionEvent e) {
					// 判断点击的是否是Color按钮
					if (e.getActionCommand().equals("Color")) {
						//弹出一个颜色选择界面,供用户选择颜色,选择好的颜色会返回给color
						color = JColorChooser.showDialog(null, "颜色选择器",
								Color.BLACK);
						System.out.println("color= "+color);
					} else {
						// 获取按钮上的文本内容
						str = e.getActionCommand();
						System.out.println("str = " + str);
					}
				}
			};

			// 定义数组,存储按钮上显示的文字
			String[] array = { "Line", "Rect", "Oval", "RoundRect","Polygon","Pencil", "Color", "Easer","Brush"};
			// 遍历数组,循环创建JButton对象
			
			for (int j= 0; j < array.length; j++) {
			
				// 创建按钮,按钮上显示的内容是数组中的元素
				JButton jbu = new JButton(array[j]);
				// 给事件源添加动作监听器方法,绑定事件处理类的对象al
				jbu.addActionListener(al);
               
				jp.add(jbu);
			}
			return jp;
		}


		/**
		 * 创建中间面板的方法
		 * @param 返回创建好的JPanel对象
		 */
		public JPanel createCenterPane() 
		{
			JPanel panel = new JPanel();// 实例化面板对象
			panel.setBackground(Color.WHITE);// 设置面板的背景色
			return panel;
		}
		
	}
		

	


 

分享到:
评论

相关推荐

    画图板小结

    标题“画图板小结”表明我们即将探讨的是一个与图形绘制工具相关的主题,可能是关于一个自定义的、开源的或者是教学性质的画图应用程序。这个工具可能具有基础的绘图功能,如选择颜色、线条粗细、形状绘制等,也可能...

    java学习小总结——画图板制作(附代码)

    本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1. Java GUI基础 Java提供了丰富的类库用于创建GUI,主要在java.awt和javax.swing包下。在这个项目中,我们可能会使用`JFrame`作为主...

    java画图板的总结

    在Java编程语言中,画图板(Canvas)是图形用户界面(GUI)开发的一个关键组件。它是Java AWT(Abstract Window Toolkit)库的一部分,用于在窗口上绘制图形。Canvas类继承自Component,允许程序员直接在屏幕上进行...

    Java画图板程序设计报告.pdf

    6. 设计小结 本报告对 Java 画图板应用程序的设计与实现进行了详细的介绍,涵盖了程序的设计要求、设计环境、总体设计、详细设计与实现、系统测试等方面。程序的设计与实现遵循了 Java 语言的编程规范和设计原则,...

    Java画图板程序设计报告.doc

    6. **设计小结** 通过本次设计,开发者不仅掌握了Java GUI编程技术,还深化了对事件处理、文件操作和图形绘制的理解。Eclipse的灵活性和扩展性为项目的实现提供了便利,同时也锻炼了开发者对开源工具的运用能力。 ...

    信息技术教案——画图.doc

    该设计方案共分为八个部分:教学目的、教学重难点、教学过程、认识“画图”窗口、尝试完成任务、保存文件、退出“画图”窗口和课堂小结。 一、教学目的 本设计方案的教学目的旨在帮助学生掌握启动与退出“画图”...

    信息技术教案——画图.pdf

    课堂小结回顾了画图程序的基本操作,强调了铅笔工具的使用和颜色选择。扩展练习鼓励学生创新,设计出“美丽家园”的画面,提高他们的绘图技能。 在后续的课程中,进一步教授了“铅笔”工具的使用技巧,包括如何画...

    C游戏编程从入门到精通(13M)

    目 录 第1章 猜数字游戏 1 1.1 游戏创意 1 1.2 游戏规划 2 1.3 程序实现 4 1.4 游戏调试 6 1.5 文本模式游戏制作 8 1.5.1 文本窗口函数 9 1.5.2 INT10中断功能 11 1.6 本章小结 11 第2章 用C语言函数库画图 12 2.1 ...

    Java典型模块

    1.4 小结 第2章 Java面向对象编程 2.1 面向对象的一些概念 2.1.1 面向对象涉及的概念 2.1.2 类和对象 2.2 面向对象的一些特性 2.2.1 继承特性 2.2.2 多态特性 2.2.3 封装特性 2.3 Java中实现的面向对象特性 2.3.1 ...

    课外兴趣小组教材-小学生电脑绘画制作入门.doc

    在第一章“认识神奇的画图板”中,教学目标主要包括以下几个方面: 1. **知识目标**:学生将初步认识“画图”窗口的布局,理解工具箱中各种工具的功能,例如刷子、填充工具等。同时,他们会了解到多媒体计算机的...

    《Visual C++数字图像处理开发入门与编程实践》源码

    第1章 Visual C++与数字图像处理 1 1.1 数字图像处理概述 2 1.1.1 图像与数字图像 2 1.1.2 数字图像处理研究的内容 4 1.1.3 数字图像处理的应用 6 1.2 Visual C++概述 8 1.2.1 C++语言简介 8 ...15.5 本章小结 640

    河北版小学信息技术第三册全册教案.doc

    * 对前面学习的“写字板”、“画图”等软件进行回顾 * 引入 word2003 软件 二、教学新课 * 启动 word2003 程序 * 认识工作界面 * 输入儿歌 * 保存文件 三、小结 * 总结今天的学习内容 * 介绍 word2003 软件的更...

    第八课当个电脑小画家PPT学习教案.pptx

    课堂小结部分,回顾了启动和退出画图程序的方法,以及如何调整画布大小。此外,还提出了三个思考问题,引导学生思考画图技巧、软件的一般启动和退出方式,以及自我评估课程中未掌握的知识点。 总的来说,这堂课涵盖...

    疯狂JAVA讲义

    1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种基本结构 25 2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML...

    Windows 7系统安装优化以及服务详解

    - 附件:所有附件默认保留,因为它们提供了各种实用工具,如记事本、画图等,对于日常使用非常有用。 - 驱动:全部保留,因为驱动是硬件正常工作所必需的,确保所有硬件设备都能正确识别和运行。 - 语言包:只...

Global site tag (gtag.js) - Google Analytics