`
什么世道
  • 浏览: 222421 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

图形化界面开发,关于画布的问题

阅读更多

 最近写了一些应用的界面,还有一些分形图形,在这个过程中感觉比较充实,只是伴随这自己的兴趣 ,虽然暂时没有足够的时间做下去(含蓄的表示还在苦逼的的课程设计中苦苦的不能自拔,   T.T),但以后会多多花些时间在上面多多学习欣赏创造间在上面多多学习欣赏创造  ,这个过程中也发现了不少问题
比如说,获取画布在上面画东西。本人琢磨了许久,一开始只知道用添加监听器来实现,但是后来觉得不是很方便,假如打开窗口惊喜就在你的眼前岂不更好,   自己摸索了1~2天,经过几次试验和调试,发现了可以用 绘图类Graphics和画布Canvas 类来实现获取画板画布并画图。
  首先介绍一下添加监听器的方法,这个是我们五子棋中的一贯做法,这里可以照搬过来,以鼠标点击窗体上按钮来作为事件源(只是举一例,其他自己可以YY啦~~~,在此就不罗嗦),打开窗体后不会有显示出你的图像哟,点击按钮,图像才会显现。简要附上关键代码

/**
 * 定义五子棋的窗体类,该类继承自JFrame
 * @author YangKang
 *
 */
public class Five_In_Row extends JFrame{
/**
*Five_In_Row是JFrame窗体类的子类,这样才能获取画布和重绘
*

//定义入口主函数
	public static void main(String[] args) {
		Five_In_Row df = new Five_In_Row();
		df.iniGUI();
	}
/**
 * 定义一个初始化界面的方法
 */
	public void iniGUI(){
		//设置窗体的属性值
		this.setTitle("五子棋");
		this.setSize(new Dimension(580,600));
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);//以上不是重点,可以忽略
		this.setVisible(true);
                //这一步及其重要,必须放在获取画布对象之前,否则不能获取到画布对象

		
		//在窗体可见之后,获取画布的对象
                //获取画布对象的关键语句
		Graphics g = this.getGraphics();
		
		//实例化事件处理类的对象
		ChessListener cl = new ChessListener(g);
		//给事件源添加鼠标监听器方法,绑定事件处理类的对象
		this.addMouseListener(cl);
	}


添加动作监听器
public class ChessListener extends MouseAdapter {
	//定义画布属性
	private Graphics g;
	
	/**
	 * 构造方法
	 * @param g要赋给属性的参数名
	 */

         //添加构造器,传入画布对象
	public ChessListener(Graphics g){
		this.g = g;
	}



接下来扯一下怎么直接获取画布绘图

用绘图类Graphics画图

/**
 * 分形
 * @author YangKang
 *
 */

public class Fractal extends JFrame  {
	/**
	 * 程序的入口主函数
	 * @param args
	 */
		
	private Graphics g;//必须定义全局变量,否则将被判为空指针!!!
     
	public static void main(String[] args) {
		//实例化分形窗口主界面
		
		Fractal fl = new Fractal();
		fl.iniGUI();
	}

/**
 * 定义一个初始界面的方法
 */
	public void iniGUI(){
		//设置窗口的属性
		this.setTitle("分形界面");
		this.setSize(new Dimension(800,800));
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);//以上都是废话
		this.setVisible(true);//窗体不要搞时髦设隐形
		g = this.getGraphics();//获取窗体画布
		}
/**
	 * 定义一个分形图形的方法
	 */
	public void frac(Graphics g){
	//接下来随意发挥~~~,什么g.fillxxx, g.drawxxx都用上.....
  
		}





画布Canvas类获取画布

/**
*CanvasDemo 是Canvas 画布类的子类,说白了Canvas类也基本用到了Graphics方法。 
*/

public class CanvasDemo extends Canvas {

	/**
	 * 定义一个绘图的方法
	 */
	
	//重绘方法
	public void paint(Graphics g){
		//绘制三角形
		int x[] = {20 , 80, 140};
		int y[] = {270, 200, 270};
		g.drawPolygon(x, y, 3);
		
	}
	
		
	/**
	 * @param args定义入口主函数
	 * 
	 */
	public static void main(String[] args) {
		JFrame jf = new JFrame();
		CanvasDemo cm = new CanvasDemo();
		cm.setSize(300,300);
		jf.add(cm,BorderLayout.CENTER);
	        jf.pack();//这个什么意思,猜猜看?
		jf.setVisible(true);
		
	}

}




也许有留心的孩纸会有疑问,WHY你小子定义的类不是什么继承窗体类就是什么画布类?
因为这些图形界面都继承于Component类,继承窗体和画布类直接可以调用父类重绘的方法,从而不会导致刚打开的画面一下子就消失了。这么晚了,也该睡了.......最后附上画布重绘的方法
public void paint (Graphics g){
super.paint(g);
g...........;//那里不会点哪里吧O.O

}


 

分享到:
评论

相关推荐

    基于HTML5 Canvas的关系、拓扑图形化界面开发工具包,完全开源,参照于jtopo.zip

    基于HTML5 Canvas的关系和拓扑图形化界面开发工具包,如jtopo,为网络应用提供了构建网络拓扑图、流程图、组织结构图等复杂图形的能力。jtopo是一个JavaScript库,它完全开源,使得开发者可以自由地使用、修改和分发...

    JAVA图形化界面SWING

    Java Swing 是Java标准库中的一个组件,用于构建桌面应用程序的图形用户界面(GUI)。它提供了丰富的组件集合,如按钮、文本框、菜单等,使得开发者能够创建出功能强大的交互式应用。Swing 是基于Java AWT(Abstract...

    迷宫程序(VC图形化界面)

    总的来说,《迷宫程序(VC图形化界面)》融合了数据结构(如队列)、算法(广度优先搜索)、图形界面编程(MFC、Windows API)、内存管理和随机数生成等多个IT领域的知识点,为学习者提供了丰富的实践平台,有助于...

    JAVA图形用户界面设计与实例 陈家兴等 2004年.pdf

    1. Java基础回顾:为了让读者更好地进入图形界面的开发,本书可能会对Java的基础知识进行简要的回顾,包括Java的基本语法、面向对象的概念、异常处理等。 2. AWT基础:作为Java最早提供的图形界面工具包,AWT的一些...

    画布开发

    【标题】:“画布开发”通常指的是利用图形用户界面(GUI)中的画布元素进行程序设计和开发。这种技术在各种领域中都有应用,如游戏开发、数据分析可视化、UI设计等。通过画布,开发者可以动态地绘制和操作图形,...

    C++简易画图软件(图形界面)

    在本项目中,我们讨论的是一个使用C++编程语言实现的简易画图软件,它具有图形用户界面(GUI)。这个程序允许用户通过鼠标或其他输入设备进行基本的绘图操作,如绘制直线、曲线、填充颜色等。下面我们将深入探讨这个...

    图形用户界面(GUI)制作

    在初学者阶段,MATLAB的"demo"程序展示了GUI的基本使用,用户只需在命令窗口中运行即可体验到图形界面带来的便利。然而,编写GUI程序可能会遇到困难,因此,通常会从简单的示例开始,逐步学习设计原则和制作步骤。 ...

    学习wxpython开发图形界面

    `wxPython` 是一个强大的工具包,用于在 Python 中开发图形用户界面(GUI)。它基于流行的 `wxWidgets` 库,该库是跨平台的,支持 Windows、Mac OS X 和 Linux 等操作系统。利用 `wxPython`,开发者可以创建出与原生...

    c语言课程设计 图形界面五子棋

    【C语言课程设计:图形界面五子棋】 在本次C语言课程设计中,我们构建了一个图形界面的五子棋游戏。这个项目展示了如何利用C语言实现一个交互式的、具有图形用户界面(GUI)的应用程序。五子棋是一种两人对弈的策略...

    java 图形化贪吃蛇

    【Java图形化贪吃蛇游戏开发详解】 贪吃蛇是一款经典的电子游戏,它以其简单易懂的游戏机制和无尽的挑战性深受玩家喜爱。在这个Java版本的贪吃蛇游戏中,我们利用Java的图形用户界面(GUI)技术实现了游戏的可视化...

    Dijkstra算法的图形化表达

    在"图形化表达"中,Dijkstra算法可以通过图形界面(Winform)进行可视化展示,使得用户能够直观地理解算法的运行过程。Winform是.NET框架下的Windows应用程序开发接口,可以创建丰富的用户界面,包括按钮、文本框、...

    二叉排序树项目可视化图形界面

    **二叉排序树项目可视化图形界面** 在计算机科学中,数据结构是编程的基础,而二叉排序树(Binary Sort Tree,BST)作为一种重要的数据结构,它具有很多实用特性,如快速查找、插入和删除操作。本项目是针对数据...

    用c#编写的二叉树的图形化显示

    在C#编程环境中,我们可以利用Windows Forms来创建一个图形化界面,直观地展示二叉树的结构。本项目就是这样一个示例,通过C#实现二叉树的动态绘制,帮助用户理解和分析二叉树的形态。 首先,我们要了解二叉树的...

    数据结构 二叉树 java图形界面实现

    它可能包含了二叉树节点类的定义,以及图形界面元素如按钮、文本框和画布。当用户通过界面交互时,例如点击“插入”按钮,对应的事件处理器会调用二叉树的插入方法,并更新图形界面显示二叉树的结构。同样,删除、...

    Qt实现背景画布上的图形绘制

    在本文中,我们将深入探讨如何使用Qt框架来实现一个功能丰富的画图应用程序,该程序能够支持在背景画布上绘制图形,包括多边形、折线和点,并且允许用户自定义填充颜色、调整画笔样式,以及进行图片的打开与保存。...

    ZLRobIde机器人图形化编程软件的设计.pdf

    在工业领域,图形化编程的代表有National Instruments的LabVIEW,它通过梯形图等图形化方式帮助设计者解决问题和提高生产力。在教育领域,Google的Blocky和Scratch等软件运用图形化编程原理,在多媒体和互动教学方面...

    Java图形用户界面

    总的来说,Java的图形用户界面开发涵盖了组件的创建、布局的管理、事件的处理等多个方面,通过熟练掌握这些知识,开发者可以创建出各种丰富的、用户友好的应用程序界面。通过实践和不断练习,你可以设计出符合用户...

    内存画布实现双缓冲显示

    在VC6(Visual C++ 6.0)环境下,程序员经常利用这些技术来优化图形界面的更新,以避免闪烁和不连续的显示效果。 内存画布是一种在内存中创建的虚拟画布,它允许程序先在内存中进行绘图操作,而不是直接在屏幕上...

    Qt图形用户界面编程技术入门.pdf

    【Qt图形用户界面编程技术入门】是一篇针对初学者的指南,主要讲解如何利用Qt框架进行GUI应用开发。Qt是一个跨平台的C++库,它提供了丰富的API和工具,使得开发者能够创建桌面系统和嵌入式设备上的应用程序,无需...

    应用开发-画布技术-时钟-功能性小程序-画布时钟小程序.zip

    本资源提供了一个基于画布技术的时钟小程序开发指南和完整源码,该小程序展示了如何使用HTML5 Canvas或微信小程序的画布API来创建一个功能性的时钟。这个时钟小程序不仅提供时间显示,还能作为学习如何在小程序中...

Global site tag (gtag.js) - Google Analytics