JAVA Swing的图形化界面开发+源代码(2)
时间:2019-05-17 20:04 来源:毕业论文 作者:毕业论文 点击:次
1编译环境与技术 1.1 JAVA JAVA语言,前身是OAK语言。由sun公司推广。具有“一次编写,到处执行”的特点[1]。优点在于面对对象,语言可读性强。 1.2 Eclipse 用于编写JAVA的IDE。本身具有开源性,可以添加各种插件,方便于编写程序。[8] 2 课题的提出与设计 参考的游戏: minecraft。 《我的世界》是一款风靡全球的高自由度沙盒游戏,由瑞典Mojang AB和4J Studios开发,于2009年5月13日发行。2014年11月6日,该游戏被微软收购。2016年网易取得了该游戏在中国的代理权。 3 基础框架设计 3.1 图形化界面技术 3.1.1 JAVA SWING技术 通过JAVA SWING扩展组件,可以实现对屏幕进行绘制,并且通过与组件的互动来控制程序数据。 3.1.2 GUI设计 GUI模块大体分为3个类。组件(Component)、容器(Container)与布局管理器(LayoutManager)。[4] 组件是最基本的组成部位,可以以图形化的方式与用户交互。常用的有Button,Canvas等。本软件基本用的是Canvas。 容器主要负责容纳其他组件与容器。 布局管理器处理容器中的各个组件之间的位置关系。常用有边界布局(BorderLayout)、卡片布局(CardLayout)等。[5] 本软件采用一个容器Jfram存放组件Canvas。一个Canvas用于绘制主界面。一个用于绘制背包界面。两个Canvas用CardLayout布局管理器控制。通过键盘监听器控制布局管理器。从而实现界面的切换。 Cardlayout布局管理器能让多个组件共享一个空间,就像卡片一样叠在一起。通过自带的方法能够切换组件显示状态。[12] 一个Canvas的好处是结构明了,用户只用在一个组件上面处理数据,各个组件不会重叠,不会产生冲突。 主界面演示 3.1.3 Canvas Canvas是一个用来绘制图像的组件。使用的时候创建一个Graphics对象获取它的图形上下文,并且覆写父类的paintComponent()方法,就可以在里面进行绘制工作。 每一次绘制都有覆盖顺序,一般是背景层、前景层、人物层、UI层。背景层的优先级最低,被别的层覆盖。 3.1.4 Graphics对象的基本绘制函数 drawImage():用于调用图像文件并绘制到组件上。使用的时候需要读取本地图像文件。并且声明异常。 drawSrting():用于绘制直线,简单的绘制函数。用于绘制UI的边界。 3.2 多线程 3.2.1 基本概念 早期的计算机一般都是单线程。也就是执行完一个计算进行下一个。这种计算就是单线程。[11]进行简单重复的计算可以使用这种。但是软件里面要同时计算人物与地图每一块的状态等,所以需要多个线程进行同时计算。[6]线程因为共享相同的地址空间并共同构成一个大的进程,所以同一进程中的线程间的通讯是非常简单而有效的,上下文切换非常快并且是整个大程序的一部分切换。[3] 3.2.2 基本实现方法 继承Thread类。 实现Runalbe接口。 由于Java可以实现多个接口但是只能单继承,继承方法扩展性不强。故用第二种方法编写类。[10] 3.2.3 基本线程 地图线程,记录各个物体的状态。 (责任编辑:qin) |