




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象语言程序设计报告题目: Java GUI 程序设计姓名: 班级:学号:指导教师: 2016 年 12 月摘要Java是一门功能强大和简单易的面向对象编程语言, Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。通过学习 Mathematica中提供的 Java接口 JLink,将利用在 Java的图形界面窗口中输入 Mathematica语句并在 Java的图形窗口中显示输出结果。对于大多数第四代语言的集成开发环境都有命令窗(Command Window) ,而由于 Mathematica的特殊性,它的集成开发环境中并没有命令窗,本设计也类结果似于命令窗,可以帮助习惯于其他第四代语言的用户继续使用命令窗。关键词:Java ;Mathematica; JLink;GUI目 录面向对象语言程序设计报告 .1摘要 .2目 录 .2第一章 引言 .1第二章 设计思路 .22.1 框架设计 .22.2 详细设计 .22.2.1 JLink.2第三章 结果 .3第四章 不足与展望 .4参考文献 .5附录 .5GraphicsApp.5welcome.9openurl.11中国地质大学课程报告1第一章 引言Java 是一门面向对象编程语言,不仅吸收了 C+语言的各种优点,还摒弃了 C+里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。 Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 1 。Java 具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 2 。Java 可以编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等 3 。图形用户界面(GUI, Graphical User Interface)是指以图形化方式与用户进行交互的程序运行界面,它的引入会使程序更友好、更丰富,且提供灵活、强大的人机交互功能,它已成为当前应用程序设计的主流。在 GUI 程序设计中,组件(Component )是 GUI 的基本组成元素,凡是能够以图形化方式显示在屏幕上并能与用户交互的对象均为组件。事件是指组件触发的动作事件,java 中不同的事件由不同的监听器处理,组件是事件源对象,而监听器主要用来接收来自事件源对象产生的动作事件,然后对其处理。Wolfram 语言(通常指代 Mathematica 或者缩写为 MMA),是 Mathematica 和 Wolfram Programming Cloud 所使用的语言。这是一种由沃尔夫勒姆研究公司开发的多模态编程语言。它是一种被期望将颠覆编程甚至颠覆世界的全新计算模式。它具有广泛和普遍的适用性,主要特点是符号计算、函数式编程和基于规则的编程。它可以用来创建和表示任何结构和数据。这种语言覆盖面非常全面和广泛,并且可以用于解决大量专业领域的问题。例如,它内置了用于生成和运行图灵机、创建图形和音频、分析三维模型、矩阵操作、求解微分方程的内置函数。为了方便用户使用,还提供了丰富的文档资料。Mathematica 的底层解释器大部分由 C 语言写成,此外一些极端要求速度的基础计算函数也由 C 语言支持,而其他大量的实用函数以及包由则是由 Mathematica 编程语言来实现的。解释器和这些函数构成了所谓的 Mathematica Kernel。Mathematica 这个生态系统的另外一个重要组成部分是前端(Front End) ,大量美轮美奂的数学公式显示,图形绘制,文档排版功能都极大程度地依赖前端,而前端和 Kernel 之间通过 MathLink 进行交互。Front End 和 Kernel 被设计得相当独立,尽管并不普遍,但是 Front End 实际上是可以被当做独立的软件来使用的,用户可以在上面编辑文字公式,生成漂亮的文档、演示文稿,绘制图形等等。虽然 Mathematica 提供了 JLink 包,但是关于这部分的帮助却不是中文的,对于 Java初学者来说理解起来会有着较大的困难。在网络上搜索,发现有关这方面的中文资料也是寥寥无几。每一种计算机语言都有着它的优点和不足,Mathematica 虽然简单强大,但是也有它不擅长的方面,例如在进行二进制文件操作方面,读取速度相当慢,而且提供的对二进制文件的操作也极为匮乏,对于较大的二进制文件,除非内存至少有文件大小的两倍大小,否则无法操作。而 Java 语言相比于 Mathematica 在对于某些相对原始的文件操作上有着较大的优势可以弥补其不足。本次进行的学习,为以后的实际需要提供了帮助也可以帮助习惯于其他第四代语言的用户在过渡期暂时使用“Mathematica”下的命令窗。Java GUI 程序设计2第二章 设计思路2.1框架设计经过仔细的考虑与多次的尝试得出了一个程序框架,如图 2-1 所示。欢迎窗口 图 1图 2图 3显示结束后自动关闭工作窗口 菜单:帮助 在线帮助:打开网页 1在线资源:打开网页 2结果显示面板( JLink包提供)输入框及运行按钮其他可选项 图 2-1 程序框架2.2 详细设计程序的核心在于利用 Java 调用 Mathematica,欢迎窗口和界面的搭建与事件处理十分简单,在任何一本有关 Java 的书中都可以查到。下面将重点介绍 JLink。2.2.1 JLink在 Mathematica 中提供了许多接口与外部程序交流信息,其中 JLink 就是专门针对 Java而做的一个接口。通过 JLink,你可以完成在 Java 中调用 Mathematica 的功能,也可以完成在 Mathematica 中调用 Java 的功能。由于 Java 并不自带 JLink 包,首先要将 JLink 包加入 classpath 中。如果使用 eclipse 进行编程,可以在 Java project 下新建一个“lib”文件夹,将 JLink.jar(如果使用默认安装路径则在:C:Program FilesWolfram ResearchMathematica11.0SystemFilesLinksJLinkJLink.jar)拖入该文件夹下。在 JLink 中,有两个最重要的 interface 分别为 MathLink 和 KernelLink。KernelLink 继承自 MathLink。一般只需要使用 KernelLink 这个接口。为了完成交互过程,需要获得一个 KernelLink 的对象。这里获得的方法采用工厂模式:MathLinkFactory.createKernelLink(argv).在这里 argv 中包含了安装的 Mathematica 的目录地址。对于采用默认安装路径的 Mathematica11.0.x 版本为:“-linkmode launch -linkname c:program fileswolfram researchmathematica11.0mathkernel.exe “(在 Mathematica 中不用“ ”作为路径的分割符,而是用 “”或“/ ”) 。修改好后放到 argv 所在的位置中即可完成获得 KernelLink 对象的过程。Mathematica 在 Java 环境中是以类的形式组织起来的:在包中定义了一个 Expr 类来表示 Mathematica 的表达式(Mathematica 中一切都是 Expression) 。所以在 Java 中,可以将得到的信息和要传递的信息都封装为 Expr 类的一个对象。从 KernelLink 中读取信息,可以调用 getExpr()方法得到 Expr 对象,然后可以调用这个 Expr 类提供的多个方法进行想要中国地质大学课程报告3的操作。这些方法和你在 Mathematica 中遇到的基本相同,都是那里面的函数名,只不过改为以小写字母开头的方法而已。像 KernelLink 中写东西也很简单,构建 Expr 对象,然后将它作为参数传递给相应的方法。在包中定义了一个 MathLinkException,用来表示交互过程中出现的所有异常。一般Link 的方法都会抛出异常,所以最好要将这些语句用 try,catch 结构围起来。程序中其他一些不好理解的部分也已经用注释来标注,如果还想想看到关于这方面更详细的说明可以查看 Writing Java Programs That Use the Wolfram Language,它的地址为:/language/JLink/tutorial/WritingJavaProgramsThatUseTheWolframLanguage.html。第三章 结果启动界面:(a) (b) (c)图 3-1 启动界面每张图显示时间为 1s,Alpha 通道为 0的地方显示为灰色打开菜单中的帮助:(a) (b)图 3-2 帮助(a)在线帮助 (b)在线资源部分运行结果Java GUI 程序设计4(a) (b) (c)(d) (e) (f)图 3-3 测试结果(a)曼德博集 (b) 按人口加权的词云 (c) 氢原子的电子云(使用排版输出)(d) Juno探测器的飞行轨道 (e) 咖啡因的三维空间填充分子图形 (f) 图灵机的演变 第四章 不足与展望由于个人水平有限,时间不是特别充裕,程序中有着诸多的不足,例如:1. 为欢迎界面制作的 PNG 图片都加入了 Alpha 通道,Alpha 为 0 的地方应该是透明的,但是实际上是灰色的,如图 3-1 所示。2. 前端不具有交互性,在 Mathematica 中可以受控制的动态无法实现动态显示,不过发现列表(List,类似于 Java 中的数组)却是动态显示的,可以用列表的方式实现动态效果,但速度不受控制。3. 字符过多时,似乎无法完成运算。例如图 3-1 词云中的代码中有 600 多个汉字,无法得到结果。4. 还没有将复制加入弹出菜单中,想保留结果只能截图。中国地质大学课程报告5参考文献1 李刚. 疯狂 Java 讲义.第 2 版M. 电子工业出版社, 2012.2 赵景晖. Java 程序设计M. 机械工业出版社, 2005.3 明日科技. Java 从入门到精通.第 3 版M. 清华大学出版社 , 2012.附录GraphicsApppackage sy;import com.wolfram.jlink.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class GraphicsApp extends JFrame static GraphicsApp app;static KernelLink ml;MathCanvas mathCanvas;TextArea inputTextArea;Button evalButton;Checkbox useFEButton;Checkbox graphicsButton;Checkbox typesetButton;JMenuBar jmb = new JMenuBar();JMenu jm1 = new JMenu(“帮助“);JMenuItem jmi1 = new JMenuItem(“在线帮助“);JMenuItem jmi2 = new JMenuItem(“在线资源“);/ 欢迎界面public static void main(String argv) JFrame frame = new JFrame(“欢迎屏幕“);中国地质大学课程报告6frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);welcome splash = new welcome(“C:/Users/siyuan/Desktop/滑稽.png“, frame, 3000);welcome splash2 = new welcome(“C:/Users/siyuan/Desktop/我爱学习.png“, frame, 2000);welcome splash3 = new welcome(“C:/Users/siyuan/Desktop/mma2.png“, frame, 1000);frame.pack();/ frame.setVisible(true);try / 获得KernelLink的对象ml = MathLinkFactory.createKernelLink(“-linkmode launch -linkname C:Program FilesWolfram ResearchMathematica11.0mathkernel.exe“);ml.discardAnswer(); catch (MathLinkException e) System.out.println(“连接kernel时出现问题“ );return;app = new GraphicsApp();/ 界面构建public GraphicsApp() setLayout(null);setTitle(“绘图+“ );mathCanvas = new MathCanvas(ml);add(mathCanvas);mathCa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 17440-2025粮食加工、储运系统粉尘防爆安全规范
- JJF 1282-2025时间继电器校准规范
- 动漫制作合同范本
- 农村地抵押合同范例
- 买卖鞋合同范例
- 公路发包合同范本
- 买断企业产品合同范本
- 代办检测合同范本
- 企业bt项目合同范本
- 三方工程合同范本
- 钢筋工程隐蔽检查验收记录表
- 区块链技术应用开发项目可行性分析报告
- 2022版10kV架空配电线路无人机自主巡检作业导则
- 加强师德师风建设学校师德师风警示教育讲座培训课件
- 猪饲料购销合同书
- 约克中央空调冷水机组年度维保方案
- 新闻采访与写作课件第十九章融合报道
- 常用小学生词语成语积累归类大全
- 七种不同样式的标书密封条
- 全国水利工程监理工程师培训教材质量控制
- 中国传统成语故事(英文版)
评论
0/150
提交评论