Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 596

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 596

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 613

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 730
JavaFX应用博客 http://www.javafxblogs.com JavaFX技术应用、编程、例子、技巧、学习、实例、教程和分享 Wed, 26 Dec 2012 08:59:23 +0000 http://backend.userland.com/rss092 en Operating Cloud Foundry using BOSH on vCenter Automation is the key to operate a large scale cloud platform, no matter it is an IaaS, a PaaS or a SaaS. This web site think in Cloud Foundry recently published a series of blog posts on how to manage the life cycle of Cloud Foundry using the tool chain ... http://www.javafxblogs.com/operating-cloud-foundry-using-bosh-on-vcenter/ Oracle的Java规划 ORACLE已经完成了对SUN的收购,今天公布了对Sun各项业务的规划。总的来说,oracle将要实现软硬件一体化的整体解决方案。 Java的发展策略: Java SE: 1)快速推出JDK SE 7, 它将包含很多新功能:提高开发者的效率,高性能,多核芯片的支持等。 2)HotSpot和JRockit将是策略性虚拟机:融合两者的最佳特性,管理和实时监控功能,在hypervisor中运行本地虚拟机代码, 多核NUMA架构的编译优化等。 3) 继续支持多种操作系统。 Java EE: 1)发展Java EE的参考实现(RI),进一步针对一些重要的方向,如开发标准的模块化,新的轻量级服务器配置,RIA和UI,脚本和动态语言以及Web Services等。 2)Glassfish将作为Java EE的RI,Weblogic将继续为企业级的应用服务器。 3) GlassFish将继续支持现有的发布方式。 Java ME: 1)统一JavaME和Java SE的API。 2)优化Java ME,包括启动和运行的性能,新的交互模式,电力消耗优化,在javaFX上的优化,移植到IP TV,blue Ray和其他嵌入设备。 3) 继续对运营商和设备厂家的二进制优化。 富互联网应用(Rich Internet Applications)JavaFX 1)扩展Java来提供前所未有的RIA体验。 2)面向(界面)设计的视觉组装。 3) 高效率的UI组件库。 4)跨设备的可移植性和用户交互模型,包括移动、桌面、电视以及其他设备。 5)无缝的与java,javascript以及html5的互操作。 6)实现和Oracle ADF/ADF Mobile互补 开发工具 1)NetBeans继续作为轻量级的Java IDE,重点在Java EE6,Java ME和脚本语言,增加在移动应用和动态脚本语言的关注,Hudson将作为开源的Build方案。 2)oracle的JDeveloper将继续成为Oracle的策略性的开发工具,主要是和fusion等中间件的集成。 3)继续对Eclipse支持和作贡献。 其他连接: JavaFX Blog javaFX Guy博客 JavaFX Game JavaFX Observation Java SE 6 U18较大的性能改进 US Citizenship Application Online Canadian Citizenship Test American Citizenship Test UK British Citizenship Test 广州华侨医院呼吸科著名庸医 骆文志 http://www.javafxblogs.com/oracle%e7%9a%84java%e8%a7%84%e5%88%92/ Java SE 6 U18的性能提升 和J2SE u17不同, U18更新版不是针对安全性的,它主要是提高性能的改进版本,对整个Java SE 6的很多方面都作了性能上的提升。 快速创建jar文件:如何你的程序里需要创建很多jar,应该可以看到20%的性能提高。 Hotspot虚拟机的增强功能:主要包括了一些硬件相关的优化,垃圾回收参数的改进,类加载的优化,编译时代码生成的优化等。G1垃圾回收器也增强了,但是如果要在生产上用,建议还是购买Sun的支持服务。 应用启动的时间优化:Web Start和applet应用可以同时download多个jar文件,速度加快。如果是JavaFX的应用,启动的速度加快了大约20%。我试了一下上次提到的冬奥会JavaFX的程序,在U18下启动确实快了不少。 其他的一些改进有:图形界面的性能,zip文件的读操作,部署更新等。更多的信息可以参考这里。 其他: Eclipse的JavaFX插件发布 NetBeans 6.8的新功能 JavaFX in Olympics 离线启动JavaFX程序 US Citizenship Application and Test Canadian Citizenship Test US Citizenship Application Guide British Citizenship Exam information Australian Citizenship Test Online Practise UK citizenship Test http://www.javafxblogs.com/java-se-u18%e7%9a%84%e6%80%a7%e8%83%bd%e6%8f%90%e5%8d%87/ Eclipse的JavaFX 1.2.1插件发布 上周发布的JAVAFX 1.2.1的Eclipse插件可以下载了, 这对喜欢Eclipse的用户来说是件喜讯。一直以来,由Sun支持的NetBeans和IBM支持的Eclipse两大开源IDE互相学习,取长补短,目前看功能和水平都差不多了。我觉得IDE是个工具,用哪个都无所谓,只要自己用得顺手和习惯就行。唯一可惜的就是两者的插件互相不兼容,没法通用,造成不少麻烦。 JavaFX的“官方”IDE一直就是NetBeans,可以和JavaFX SDK一起下载。Eclipse是Sun兼顾的IDE,毕竟Eclipse的用户还是很多的。我想国内很多JAVA程序员都是用Eclipse的,所以JavaFX的eclipse插件对他们是很好的帮助。 详细信息和下载地址:http://javafx.com/docs/gettingstarted/eclipse-plugin/release-notes.jsp 其他连接: JavaFX Gaming Examples JavaFX Technology British Citizenship Test for UK Australian Citizenship Test Citizenship test on iphone US Citizenship Test Practise iPhone App Experts http://www.javafxblogs.com/eclipse%e7%9a%84javafx-121%e6%8f%92%e4%bb%b6%e5%8f%91%e5%b8%83/ NetBeans 6.8的新功能 NetBeans 6.8已经发布,这个版本的IDE支持JavaFX 1.2.1代码的编辑,具有更好的代码自动完成、提示和导航功能。NetBeans 6.8和JavaFX SDK可以从Javafx.com一并下载。 当然,NetBeans 6.8不仅仅是JavaFX的IDE,它还是首个支持Java EE 6的IDE,通过更少的XML配置、注解(annotation)和POJO来大大化简Java应用开发过程。 其他显著的特性有: 支持PHP: NetBeans IDE 对动态语言的支持扩大了,包括了PHP 5.3和Symfony框架。 更家紧密的和Kenai集成: Kenai是承载开源项目的协作环境,提供了完整的JIRA支持、改进的即时消息和问题追踪集成。 C/C++程序分析(Profiling): 新的Microstate Accounting指示器和I/O使用监视器可以帮组开发人员分析和优化C/C++程序。 NetBeans平台: 是个坚实的Swing应用的框架,该平台可以使程序员大大节约时间和精力,因为常用的菜单、工具条、键盘快捷键和窗口管理等功能都可直接使用。 下载地址 http://netbeans.org/community/releases/68/ Online British citizenship test UK UK citizenship test on iPhone NASCAR Diecast Collectibles Canadian Citizenship Test Guide American Citizenship Test and Appilcation Guide United States Immigration Services for Parents and Spouse Wife Husband United Kingdom Citizenship and Settlement Test http://www.javafxblogs.com/netbeans-68%e7%9a%84%e6%96%b0%e5%8a%9f%e8%83%bd/ 介绍《JavaFX本质论》 目前,关于JavaFX的书籍还比较少,英文版的JavaFX书主要有3本:James Weaver等著的《JavaFX Pro》,Jim Clarke等的《JavaFX:Developing RIA》,还有Gail Anderson夫妇的《Essential JavaFX》。中文版的书籍就更少了。最近,由Sun亚洲全球化中心翻译的《Essential JavaFX》已经由人民邮电出版社和英文版同步出版,中文译名《JavaFX本质论》。这是一本JavaFX学习者不可多得的中文参考书籍,因此给大家介绍一下。 作者Gail & Peter Anderson是Anderson Software Group, Inc的创始人。该公司主要从事软件工程专业人员的培训工作,该公司开发的教程被业界广泛采用。《JavaFX本质论》是按照培训技术人员的思路设计的,因此,读者可以根据该书的章节快速有效地学习JavaFX编程语言。Gail Anderson在写书的时候,还得到Sun公司Octavian Tanase和Richard Bair等JavaFX 核心团队的支持和帮助,因此书中的内容比较能体现JavaFX的设计精神和理念,书中涵盖的程序范例和技术细节均符合JavaFX 1.2 的标准规范。还值得一提的是,本书是由Sun公司位于北京的亚洲全球化中心翻译校对,除了译文忠实于原文之外,还使得本书更带有“准官方”的色彩。 本书面向的读者主要是已经有编程经验的开发人员(但不一定需要Java经验)。对于没有任何编程基础的读者,最好先读一些编程语言的教程,如Java,C++等。我觉得 JavaFX最有可能的读者应该是Java程序员。这不仅仅是因为JavaFX名字中包含了Java一词,其实JavaFX的实现技术也是基于Java的,并且可以直接调用Java代码。对于已经熟悉Java的程序员来说,阅读JavaFX的程序有点像在读Java语言的扩展模块。另外,对C++ 程序员来说,也应该不难理解JavaFX的语法和概念,毕竟Java的语法基本上从C++借鉴过来的。 在你已经熟悉或精通了一种编程语言之后,再学习新的语言,最需要了解的就是新语言的特点和语法特色。笔者觉得一种行之有效的方法就是先看写程序的例子(如HelloWorld等),以便了解新语言的语法风格。有了这个感性认识之后,再看具体的语言介绍就会容易理解了。《JavaFX本质论》就是按照这样结构来安排的,书中的所有程序例子都可以从网上下载,读者可以一边阅读一边看示范程序的运行,因此非常适合JavaFX初学者。中文版还把书中的代码注释都翻译了,更加易读。 第一章主要介绍JavaFX SDK下载和NetBeans IDE。对于熟悉JDK和IDE(Netbeans或Eclipse)的读者,可以很快的构建自己的JavaFX开发环境。 第二章是本书的引子,通过一个JavaFX吉他调音器(GuitarTuner)例程,让读者体验JavaFX的风味,并且介绍一些重要的概念,如声明式结构,JavaFX场景图(Scene Graph),绑定和动画等。这章的目的是让读者迅速了解到JavaFX可以实现什么功能,以及如何实现这些功能的。通过前两章的阅读,读者已经可在NetBeans IDE中运行一个较完整的JavaFX应用。 第三章是语法介绍,包括变量类型、运算符表达式,函数、类和对象、触发器等基本语法元素。对Java程序员来说,可以重点关注JavaFX 和Java的语法异同点。本章也是可以较快跳过的章节,可以作为今后阅读和编写JavaFX程序时的参考文档。 第四和第五章主要是描述如何用JavaFX的图形对象和控件来构造用户界面(UI)。这是JavaFX特有部分,在编程中广泛应用,因此需要仔细阅读。虽然JavaFX的UI里面可以看到不少Java SWING和Java 2D的痕迹,JavaFX甚至还提供了Swing的控件Wrapper,在使用上面JavaFX还是带来了简洁和便利等优点。 第六章深入讲解了一个JavaFX的项目:Piano(钢琴)。读者可以领略到JavaFX的强大功能,如各种视觉效果(渐变、阴影等)、时间轴、动态布局和序列操作等等。 这个程序还展现了JavaFX如何直接调用Java的功能来丰富应用程序。 第七章是关于动画功能的详述。动画可以说是JavaFX区别于Java的一个重要特性。常用的动画感念和技巧,如时间轴(Timeline), 关键帧(Keyframe), 动画插值(interpolation), 路径动画(path)和过渡切换( transition)等。 第八章是介绍图像功能,主要包括Image和ImageView两个类的用法,以及各种图像效果的解释和演示。本章的例程也比较有意思,如图像墙,3D照片幻灯等。 第九章内容是Web服务,即JavaFX的客户端如何和服务器进行数据交互。在RIA中,通过Internet获取数据几乎是必需的功能。本章内容涵盖了PullParser和HttpRequest这两个主要的类,并通过例程说明如何调用Flickr的Web服务以获取相片数据。 第十章讲述了JavaFX的移动(Mobile)应用。NetBeans提供了移动仿真器(emulator),可以调试JavaFX Mobile的应用。本章所介绍的移动应用开发涉及了常见的问题,如运行环境检测、处理移动设备的屏幕转向(象iphone那种)、键盘输入等。书中还介绍了如何把桌面版的JavaFX程序修改成为JavaFX Mobile的程序。 我觉得《JavaFX本质论》是非常适合初学者的一本入门书籍,读者可以循序渐进地学习JavaFX各个方面的功能特性。对于已经了解JavaFX的程序员,也是非常好的参考手册。本书的样章电子版可以在这里阅读: 第5 章 用户界面组件 http://images.china-pub.com/ebook195001-200000/195879/ch05.pdf 第7章 动画 http://images.china-pub.com/ebook195001-200000/195879/ch07.pdf 可在各大网上书店购买,如: http://www.china-pub.com/195879 源程序下载可从作者网站(英文)下载:http://www.asgteach.com/books/javafxbook.html http://www.javafxblogs.com/javafx-essential/ JavaFX常用技巧( How-Tos ) Javafx.com中发布了一组实用的编程技巧例子,非常有参考意义。内容从最基础的概念到示范程序都有,另外还按照常见的API调用分类说明,对入门、初级和中级JavaFX学习者都是很好的借鉴。 链接如下: JavaFX How-Tos (英文) 比较重要或者有意思的内容有: 1)绑定(binding) 2)基础UI(Basic UI) 3)视觉效果(Visual Appeal) 4) 近阶内容(transition切换等) 5)JavaFX和Java,Javascript,SWING交互 本人的Pac-Man和WishTree程序被收录在Game应用程序范例里面,实在感到荣幸。 Other links: iPhone App Canada Citizen Test Canadian Citizenship Test for iPhone Canadian Citizen Exam iPhone App iCitizenship Canada http://www.javafxblogs.com/javafx_how_tos/ 离线启动JavaFX程序 JavaFX程序的启动有3种方式,一种是独立应用程序(Standalone),另一种是使用JNLP的Java Web Start方式,第三种是Applet方式。应为JavaFX是基于java的运行环境的技术,因此上述三种方式分别对应Java的独立程序、JWS和Applet方式。如果你能理解Java的的这三种启动方式,就不难理解如何启动JavaFX的应用了。 1。独立应用程序 在Java中,我们用javac来编译,然后用命令行 java -classpath <path> <class_name> 来启动程序,或者是jar的方式: java -jar <jar-file> 在JavaFX中,可以使用javafxc编译,然后采用类似的命令启动程序: javafx -classpath <path> <class_name> 通常在NetBeans中都是编译成jar文件,所以这种方式更常用: javafx -jar <jar-file> 2。JNLP的Java Web Start方式。 Java Web Start的方式是一种启动Java程序的方式,它可以使应用程序通过Web浏览器来部署和启动。JavaFX在编译后本质上就是Java代码,因此,顺理成章可以通过JWS的方式下载和启动。NetBeans编译后会生成一个<项目名>.jnlp文件,如果需要部署的话,往往要修改里面的codebase属性。例如,如果你的JNLP文件要部署在Web Server的URL为 http://www.mywebsite.com/myprog/myproject.jnlp,你的codebase应该写成 <jnlp spec="1.0+" codebase="http://www.mywebsite.com/myprog/" href="myproject.jnlp"> 如果你的程序是本地运行(脱离NetBeans环境),假定目录在C:\myfolder\myprog\中,可以写成这样,注意路径不要有C:\这样的盘符: <jnlp spec="1.0+" codebase="file:///myfolder/myprog/" href="myproject.jnlp"> 这样,在Windows中双击 myproject.jnlp 文件就可以启动文件了。这对于离线状态下运行程序比较有用。(当然,需要有JavaFX的Runtime环境支持才行。) 3. Applet方式 JavaFX程序还可以写成Applet的方式。Applet可以说是Java最原始的启动方式,启动代码可以参考NB生成的 <项目名>.html文件 相关文章: JavaFX技巧:Java调用JavaFX例子 在JavaFX中的菜单 用纯Java代码调用JavaFX的功能 其它: NASCAR Diecast Cars Collections Immigration Visa for Spouse Wife Husband through Marriage NASCAR Diecast Car Dale Earnhardt US Citizenship Test Sample ... http://www.javafxblogs.com/%e7%a6%bb%e7%ba%bf%e5%90%af%e5%8a%a8javafx%e7%a8%8b%e5%ba%8f/ JavaFX多用户在线应用实例:许愿树联机版 JavaFX作为RIA(Rich Internet Application)的开发语言,主要的特点在'R'和'I'两点上,即丰富的客户端和联网的应用。最近我把原来用JavaFX1.1写的许愿树程序改成了联机版,成为了一个3层架构应用,如下图所示,展现层是JavaFX实现的富客户端,中间层是Web Server和PHP,数据库层是MySQL。 这个新的许愿树程序可以让不同的人在许愿树上悬挂自己的愿望星,所有人看到的是同一棵树。你可以点击下图来试试这个最新联网版的许愿树啦,注意要输入email地址,以便以后修改愿望,每个人请最多留一个星星: 在JavaFX客户端的GUI部分,代码基本上和单机版的一样,已经在前面几篇文章中介绍了(参见文末的链接)。在和server通信的过程中采用了JavaFX 1.2的HttpRequest类来实现。Server的数据采用了JSON的格式(一种基于JavaScript的对象表达方式),在客户端可用javafx提供的PullParser类来解析。 首先,我们来看看客户端启动后首次加载数据的代码。在Main.fx中,我们有如下部分的代码: var parser = PullParser { documentType: PullParser.JSON; onEvent: function(event: Event) { var content: String; var name: String; var id: String; ... http://www.javafxblogs.com/javafx-wish-tree-online-demo/ JAVAFX培训的游戏 最近在javafx.com中推出了一个JAVAFX的电子学习(elearning)软件,叫作Tech Test Train。这实际上是个JavaFX的测试题软件,测试题分为5组,代表不同的知识点。答题方式不是传统的多项选择,而是直接输入答案,因此对答题者的要求更高。每道题的回答时间只有15秒,从思考到输入,时间还是非常紧的。如果过不了关,可以去看看相关的培训岂料,对提高个人的JavaFX水平是由一定的帮助的,有兴趣的可以乘搭这趟测试列车试一下. 另外,这个评测软件本身也是JavaFX写的,从运行和体验这个程序,你或许可以加深对JavaFX功能的理解: 连接:http://www.javafx.com/learn/training.jsp Useful Links: 在JavaFX中实现菜单 Swing应用中使用JavaFX的功能 JavaFX技巧:Java调用JavaFX例子 Other Links: NASCAR Drivers Diecast Cars, Collectibles Automobile Air Conditioner Parts Compressor, clutch, car, Compressors Clutches Compressor Parts Accumulators Aluminum Driers Steel Driers http://www.javafxblogs.com/javafx-training-game/ JavaFX的菜单Menu 在JavaFX的API中没有提供菜单(menu)的控件。可能是由于JavaFX设计者们觉得在RIA有没有菜单不重要。但实际中,开发人员还是常常询问如何在JavaFX实现菜单功能,于是Henry决定写个JavaFX菜单的例子(更多的例子可以参考 JavaFX编程博客 http://www.javafxblogs.com)。 JavaFX最然没有直接提供Menu的功能(注:javafxblogs.com),但是提供了一个SWING组件的封装类javafx.ext.swing.SwingComponent 。这个类可以把SWING的组件转化成JavaFX的节点(node)。 在上述代码中,我们先用构建一套标准的SWING菜单条(menu bar,JavaFX教程 http://www.javafxblogs.com),每个菜单条包含2个菜单项。这些都是标准Java SE中的功能,就不多解释了。接下来我们用以下语句来创建一个SwingComponent实例, 把SWING的菜单条包容进去: var fxMenuBar : SwingComponent = SwingComponent.wrap(menuBar); 下面3行代码是把菜单条定位在窗口的上方: fxMenuBar.width = w; fxMenuBar.layoutX=0; fxMenuBar.layoutY=0; 在Stage类中,我们可以看到fxMenuBar就像不同的JavaFX节点一样使用。由于窗口式可以调整大小的,因此我们需要一些代码来保证菜单条和窗口等宽。为了实现这点,我们增加了一个trigger,把窗口宽度的变化反映到菜单条中,变量w的trigger如下: var w : Number = 480 on replace { fxMenuBar.width = w ; }; 实际的绑定是通过这句类完成的,注意这里的双向绑定的用法: Stage { ... width: bind w with inverse ... } 下面是程序的截图,支持快捷键Alt+1,2,3,4来激活菜单项目: 相关文章: SWING中如何使用JavaFX的组件 纯Java代码调用JavaFX的功能 NASCAR Die-cast Free Online Canada Citizenship Practice Exam Questions on citizenship appliation http://www.javafxblogs.com/javafx-menu-swing/ 在SWING中使用JavaFX的组件 在文中注明:转自 http://www.javafxblogs.com 作者:Henry Zhang,即可获得授权转载. 自从JavaFX推出以来,如何在Java中调用JavaFX的功能就是个程序员常常讨论的问题。本人的文章用纯Java代码调用JavaFX的功能和JavaFX和Java之间的互操作性对此作过专题讨论。在开源项目JFXtras最近 JavaFX的代码,只有了解它的作用即可: ( 转自http://www.javafxblogs.com 作者:Henry Zhang ) /* * MyScene.fx http://www.javafxblogs.com * @author Henry Zhang */ package swingtest; import javafx.scene.Scene; import javafx.scene.text.*; import javafx.scene.paint.*; import javafx.scene.shape.Rectangle; import javafx.animation.Timeline; import javafx.animation.KeyFrame; def w = 500; def h = 400; public class MyScene extends Scene { var xx = w / ... http://www.javafxblogs.com/%e5%9c%a8swing%e4%b8%ad%e4%bd%bf%e7%94%a8javafx%e7%9a%84%e7%bb%84%e4%bb%b6/ 用纯Java代码调用JavaFX的功能 在JavaFX 1.0发布之后,本人撰写的文章JavaFX和Java之间的互操作性被各网站转载。文中总结了3种从Java调用JavaFX的方法。这三种方法分别为: 1. 用ScriptEngineManager类。这是基于JSR-223规范的java脚本API( scripting API)。可以在java程序中运行一些脚本,如 JavaFX script, javascript等。 2. 通过JavaFX reflection API。这是JavaFX提供的反射API,几乎可以调用所有的JavaFX类。 3. 先用JavaFX类实现一个Java的interface,然后Java程序可以通过这个interface来调用JavaFX的功能。这中间的interface起了个桥梁的作用。 第三种方法应该是比较“正规”而且“优美”的调用方式。但是也有一点不足:程序代码的入口必须从JavaFX启动。这是因为JavaFX程序比较容易生成JavaFX类的实例,从而可以供Java方使用。可是我们有时会碰到一些特定的情况,需要从Java端启动代码。例如,如果你已经有了一个较完整的Java程序,你需要用调用JavaFX的某些功能,这时候较好的方法是把Java作为程序的入口。为了解决这个问题,我把第2和第3种方法作了融合,大家可以看看下面的例子。 假定我们需要从Java中调用JavaFX的图表(charting)功能。我们首先用JavaFX reflection API生成JavaFX类的实例。然后我们再通过java的interface来使用它。因此,我们先定义一个Java的interface: /* * JavaInterface.java * * @author Henry Zhang http://www.javafxblogs.com */ package javatest; public interface JavaInterface { public void addData(String name, float data); public void showChart(); } 下一步是创建JavaFX类MyChart来实现这个interface: /* * MyChart.fx * * @author Henry Zhang ... http://www.javafxblogs.com/java-call-javafx-code/ JavaFX吃豆人游戏的编写过程之四 JavaFX吃豆人游戏的第五篇文章上周已经发表。在最后的这篇文章中,详细介绍了精灵追逐吃豆人的算法。这可能是该游戏代码中最有趣的部分了。 在游戏编写时,通常需要考虑一些要素,如算法的效率、随机性、简洁度等。在文章中对这些问题都作了讨论。 在追逐算法中,程序采用了比较简单的距离优先的逼近算法。如下图所示: 图中的红色精灵从右到左移动,当它在交叉路口时,它可以选择向上或者向左移动。如果我们把它和吃豆人之间的X/Y方向上的距离和作为一个评估指标的话,我们可以得到这样一个结论: 向左走的距离为14,向上走距离缩短为12。因此向上可以使得红精灵更加逼近吃豆人。通过计算,我们就可以知道向上是个比较好的选择。如果吃豆人吞下魔法豆,我们只需要把积分方式取负运算,就可以立刻成为一个精灵的逃离算法。网上还有许多关于算法的介绍,但作为例子,本文中仅介绍一个最简单和最易实现的算法。全文可以参考这里。点击下图可以启动完整的吃豆人游戏:(JDK 1.5以上) 相关文章: JavaFX应用实例、例子 用JavaFX编写的游戏Pac-Man JavaFX实例探索教程 JavaFX特性和编程实例代码 JavaFX 1.2 程序迁移指南 快速升级到JavaFX SDK 1.2的方法 JavaFX吃豆人游戏的编写过程之二 JavaFX游戏吃豆人的编写过程 英文文章连载: 2009年5月14日 - 2009年6月11日: Writing the Pac-Man Game in JavaFX http://www.javafxblogs.com/javafx-pac-man-game-4/ JavaFX吃豆人游戏在JavaOne上演示 JavaOne 2009的内容可以下载了,链接是http://developers.sun.com/learning/javaoneonline/。其中JavaFX的讲座在“ http://www.javafxblogs.com/javaone-javafx-pac-man-game/ JavaFX 1.2 程序迁移指南 本文系经原作者Stephen Chin授权翻译,英文原文:The Definitive 1.2 Migration Guide,为方便起见,英文原文的副本也可参见本站转载。有关代码迁移和JavaFX 1.2新特性内容,还可以参考JavaFX网站的文章,或者本站文章JavaFX 1.2的新特性。以下译文中的红字部分为译者加注。 本文包含了从JavaFX 1.1迁移程序到JavaFX1.2最常见的变化,例如如语言本身、功能以及API的改变。如果你发现本文没有提到的变化,请在评论中留言。 基本原则 1) JavaFX 1.2 的二进制不兼容性:对于原来的jar文件或者其它第三方的JavaFX库,如JFXtras,必须经过重新编译才能在和JavaFX 1.2的代码兼容,否则会有编译错误。JFXtras将发布基于JavaFX 1.2的更新,新的版本就快就绪了。 2)内部的API将不能用了,如果你的代码包含了impl_或者sun.com的包,你的代码肯定需要修改。 3) 支持Linux和Solaris, 这是应该说是个新功能,这样你可以对用户自豪的宣称支持Linux。译者注:这里的Solaris应指OpenSolaris。 语言上的变化 JavaFX教程、实例、Demo 1)嵌套的块语句中不可以再有变量屏蔽(Shadowing)。原来可以有同名的变量分别处于内层和外层的块语句中,在内层的语句中的变量可以覆盖外层的同名变量。在JavaFX 1.2种,需要修改变量的名字来避免重名。 2)用mixin代替多类继承性。JAVAFX不再支持多类继承性,但是你可以继承一个类和多个mixin类。Mixin就像java中的interface,不同的是它可以有变量和已实现的方法,使得所有子类都可以使用。这点需要的修改也不多,只需要把原来多继承的类加上mixin关键字即可,如: public mixin class Resizable { /* variables and functions here */ } 译者注:mixin也可以理解成可以多继承的抽象类(abstract class) 3) 在Sequence中,需要用逗号来分隔元素(除了那些用花括号结束元素)。这有点不方便,但实际上是件好事,因为可以避免以前很难追查的语言陷阱。JavaFX 1.2的新特性 Node类的变化 JavaFX编程实例 1)Node.boundsInScene 属性没有了,主要是性能方面的原因,好在有个容易替换且功能相同的调用: node.localToScene(node.boundsInLocal) 2) Node.focusable 变为 Node.focusTraversable,虽是很小的API变化,但你应知道这点以免碰上编译错误。这是有关focus功能修正的一部分:当某个Node可见(visible)、可聚焦遍历(focusTravserable)并且没被禁用时,可以得到聚焦。(key listener将不再需要) 3) CustomNode.create() 将在 init 块之前调用,原来的方式是create()方法调用在init之后,在postinit之前。既然现在的调用在init之前,那么需要注意的是变量初始化的顺序,可能需要调整一些代码。 4) SwingControl.enabled -> Node.disable 这是一个在Node类中新的标志,统一地控制启用和禁用(enable/disable)。与之矛盾的SwingControl.enabled变量已经去掉了。 5) ... http://www.javafxblogs.com/javafx-12-program-migrate-guide/ JavaFX 1.2 迁移指南(英文) 本文经授权转载自Stephen Chin的英文文章The Definitive 1.2 Migration Guide,中文翻译参见这里。 Below is the JavaFX 1.2 migration guide written by Stephen Chin. The original article can be found on his blog http://www.javafxblogs.com/javafx-12-migration-guide/ 快速升级到JavaFX 1.2的方法 JavaFX 1.2给我们带来了许多功能和性能上的提升,因此,我需要对原来的JavaFX 1.1的IDE和SDK进行升级来使用JavaFX 1.2的新特性。对于从来没有使用过JavaFX的用户来说,安装JavaFX SDK 1.2应该很简单,可以从javafx.com下载一个NetBeans 6.5.1+JavaFX 1.2 SDK混合包,那就OK了。可是对于我这种已经使用NB 6.5.1和JavaFX 1.1.1的用户,就需要考虑一些其它问题。因为我有不少程序是按照JavaFX 1.1的API写的,骤然升级可能会使得无法使用这些程序。同时由于两个SDK的IDE版本都是NetBeans 6.5.1,重新安装一遍也太浪费空间和时间,于是我查阅了一些资料并找到了快速升级的方式,同时还可以保留两个版本的SDK。 如果需要同时支持2个版本的JavaFX SDK,可以在升级前先把旧版本备份一下,这样可以避免被新的SDK覆盖。JavaFX SDK 1.1的缺省目录在C:\Program Files\NetBeans 6.5.1\javafx2\javafx-sdk,把它拷贝到另外一个目录,如C:\jfxsdk11\ 。 接下来就是升级了。在NB6.5.1 中,选择菜单Tools-〉Plugins,这时会列出一些可更新的plugin,如果没有看到列表,可以点击“Reload Catalog”按钮。如果plugin太多,可以在Search框中输入JavaFX过滤一下。有3个Plugin和JavaFX相关: Plugins    说   明 JavaFX Kit     改进过的NetBeans IDE, Version 1.8 JavaFX SDK for Windows     JavaFX SDK 1.2, Versions 1.7 ... http://www.javafxblogs.com/fast-upgrade-javafx-12/ JavaFX吃豆人游戏的编写过程之三 6月4日发表了英文连载中的第4篇文章。在这篇文章中,主要介绍了吃豆人和精灵之间互动的代码实现。代码可在“JavaFX游戏实例共享网站”中下载。 到上一篇文章为止,我们已经实现了游戏中所有的人物。现在我们来增加吃豆人和精灵追逐和互“吃”的处理逻辑。如果吃豆人和精灵相遇,只有两种情况,吃豆人吃掉精灵或者反之。如果吃豆人刚刚吞吃了魔法豆,他可以吃掉精灵,否则吃豆人就会损失一条命,这时,需要播放一段吃豆人消失的动画(如下图所示): 这个动画在DyingPacMan类中实现,代码如下: public class DyingPacMan extends Arc { var timeline = Timeline { repeatCount: 1 keyFrames: [ KeyFrame { ... http://www.javafxblogs.com/javafx%e5%90%83%e8%b1%86%e4%ba%ba%e6%b8%b8%e6%88%8f%e7%9a%84%e7%bc%96%e5%86%99%e8%bf%87%e7%a8%8b%e4%b9%8b%e4%b8%89/ JavaFX 1.2的新特性 虽然JavaFX 1.2版本还有未正式发布,但是已经可以在javafx.com下载了(显示是下载SDK1.1.1版本,实际是SDK1.2)。 JavaFX 1.2在功能上和API上都有了较大的提高,较为不便的是,对先前写成的JavaFX 1.0/1.1的代码,虽然可以在旧的runtime中继续运行,但是如果要利用JavaFX1.2的功能等优点,可能需要做迁移和语法修正并且重新编译。JavaFX 1.2 主要的新功能如下: 0)支持OpenSolaris和Linux 1)BoxBlur等新效果(effect) 2)异步的处理模式(Asynchronous Processing Model) 3)内置的数学和属性类(即JavaFX写的Math,Properties类) 4)更多新的Layout类 5)更多的Skinnable控件 6)RSS和Atom的支持 7)图表功能(饼图,柱状图、散点图等) 8)Mixin类替代了多继承性 9)Java数组的直接引用(无需通过Sequence的转换) 10)Stage的支持功能,如Screen,Alerts等 11)本地数据存储,可以支持会话状态的保存。 12)客户化UI控件的增强支持(Behavior类等) http://www.javafxblogs.com/javafx-12%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/ JavaFX吃豆人游戏的编写过程之二 上周介绍了关于编写JavaFX吃豆人游戏的前2篇文章。本周发表了5篇连载文章中的第3篇。在最新的这篇文章中,详细介绍了精灵(ghost)动画的机理,基本上和Pac-Man人物是一样的:改变坐标位置,并且不断切换画面(frame)。和Pac-Man不同的是,精灵有3组图,分别是正常(normal)、空心(hollow)以及闪烁(flashing),如下图所示: 为了说明程序结构,精灵的移动算法是随机的,也就是不能追踪Pac-Man的足迹。更好算法的介绍将在第5篇文章中详细讨论。到目前为止,游戏中的角色都齐了:4个精灵和1个吃豆人。他们现在还是相安无事,即使见面也互相不会吃掉。在下一篇文章中将介绍有关的处理逻辑。有兴趣的可以试一下目前这个半成品游戏(点击图画启动游戏): 相关文章: JavaFX游戏吃豆人的编写过程 第一篇文章,2009年5月14日: Writing the Pac-Man Game in JavaFX - Part 1 第二篇文章,2009年5月21日: Writing the Pac-Man Game in JavaFX - Part 2 第三篇文章,2009年5月28日: Writing the Pac-Man Game in JavaFX - Part 3 用JavaFX编写的游戏Pac-Man 怎样用JavaFX编写游戏:吃豆人(Pac-Man)之二 http://www.javafxblogs.com/javafx-pac-man-article-3/ JavaFX游戏吃豆人的编写过程 在JavaFX 1.0发布不久时,作为编程练习,我写了一个JavaFX游戏:Pac-Man,又称为PC MAN或“吃豆人”。Pac-Man是上世纪80-90年代非常著名的一款游戏,起源于日本,风靡全球。我写的JavaFX Pac-Man游戏引起了不少关注(参见文章:JavaFX 演示游戏:PAC-MAN http://www.javafxblogs.com/%e7%94%a8javafx%e7%bc%96%e5%86%99%e7%9a%84%e6%b8%b8%e6%88%8fpac-man/),很多读者询问如何用JavaFX编制这样的游戏,并且希望能得到原代码。 (点击画面可以启动JavaFX的Pac-Man游戏) 最近,我把编制该游戏的过程写成介绍文章,在O'Reilly出版社的insideRIA.com上连载。由于时间关系,文章暂时只有英文的,稍后会把它改写成中文的版本。感兴趣的读者可以先看看英文原文,下源代码看看。在文章中,有多处Java Web Start的链接,可以一边阅读一边看看程序是如何运行的。目前,连载的前2篇文章已经发表,以后每周四(中国时间周五)发表一篇。第一篇文章介绍了Java的数据模型,用基本JavaFX的Shape类来绘制迷宫以及豆子。第二篇文章介绍了如何实现Pac-Man的动画,如何用键盘控制人物来吃豆子的动作等。相关的JavaFX功能演示包括: . shapes . animation . keyboard handling . java code integration . Transfromation 相关信息: 第一篇文章,2009年5月14日: Writing the Pac-Man Game in JavaFX - Part 1 第二篇文章,2009年5月21日: Writing the Pac-Man Game in JavaFX - Part 2 用JavaFX编写的游戏Pac-Man 如何编写JavaFX游戏:Pac-Man(吃豆人) http://www.javafxblogs.com/javafx%e6%b8%b8%e6%88%8f%e5%90%83%e8%b1%86%e4%ba%ba%e7%9a%84%e7%bc%96%e5%86%99%e8%bf%87%e7%a8%8b/ JavaFX许愿树程序:Effect功能的应用(3) 在上篇文章中,我们可以在许愿树上悬挂许多愿望星了。现在,我们给程序增加些功能,可以在星星上记录许愿者的名字和愿望。你可以点击以下画面启动许愿树,点击许愿树后,可以看到一个弹出的窗口来输入姓名和愿望,点击“OK”确认。如果再次点击同一颗星星,就可以修改愿望的内容,快来试试看吧:(JDK1.5+或JDK 1.6) 我们来看看如何增加一个半透明的输入窗口,代码在Dialog类中。首先,我们定义一个CustomNode。javafx.scene.CustomNode提供了用户自定义图形结点(Node)的方法,程序中需要继承该类,然后实现create()函数并返回自定义的Node。我们的CustomNode由一个Group实例来实现,包括一个蓝色半透明的外围框,两个输入框,两个文本以及一个“OK”按钮。Dialog.fx的代码如下: ( JAVAFX参考文章: 用JavaFX的Effect实现许愿树(1) 用JavaFX的Effect功能编写许愿树(1) JavaFX 1.1和1.0的兼容性 http://blog.sina.com.cn/javafxcenter JavaFX和Java之间的互操作性 Java和JavaFX的互操作性) /* * Dialog.fx * * http://www.javafxblogs.com */ package wishtree; import javafx.ext.swing.SwingButton; import javafx.ext.swing.SwingTextField; import javafx.scene.CustomNode; import javafx.scene.Group; import javafx.scene.layout.VBox; import javafx.scene.Node; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.scene.text.TextOrigin; import javafx.stage.Stage; /** * @author Henry Zhang */ public class Dialog extends CustomNode { public var stage: Stage; public var star : Star; ... http://www.javafxblogs.com/javafx-wish-tree-3/ JavaFX许愿树程序:Effect功能的应用(2) 在上篇文章“JavaFX许愿树程序:Effect功能的应用(1)”中,我们介绍了用JavaFX作出白云蓝天绿树的构图。接下来我们制作冒泡的动画,使得在白云中不断有气泡升起。然后我们再画上星星。 JAVAFX相关参考文章: JavaFX 多维数组 用JavaFX的Effect功能编写许愿树(1) JavaFX 1.1和1.0的兼容性 JavaFX和Java之间的互操作性 我们创建一个JavaFX类Bubble.fx,它是javafx.scene.shape.Circle类的子类,然后加上动画就可以实现气泡升腾的效果,我们一起来看看代码: /* * Bubble.fx * * JavaFX技术交流 http://www.javafxblogs.com * */ package wishtree; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.scene.effect.GaussianBlur; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import java.lang.Math.*; /** * @author Henry Zhang * JavaFX编程技巧及应用 http://www.javafxblogs.com */ public class Bubble extends Circle { var counter = 0; var startCounter = 10.0; var radiusDelta = ... http://www.javafxblogs.com/javafx-wish-tree2/ JavaFX许愿树程序:Effect功能的应用(1) 看了同事用写了个许愿树程序(C/S架构的),其中client端的图形界面是由flash来实现。那么如果这个界面用JavaFX来写会怎样呢?我想这一定是很有趣的事情,于是就决定动手写个程序,比较一下。 首先写个主程序,把画面的Scene做出来。在这个画面中,蓝天背景和白云都需要使用图形效果(effect),在JavaFX中支持了多种图形效果,Lighting,Blur,Shadow等等,可以大大丰富我们的用户界面。我们的程序采用线性渐变(LinearGradient)效果来画蓝天,用高斯模糊(GaussianBlur)效果来画白云,程序如下: /* * Main.fx * * http://www.javafxblogs.com * */ package wishtree; import javafx.scene.effect.GaussianBlur; import javafx.scene.effect.PerspectiveTransform; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.paint.LinearGradient; import javafx.scene.paint.Stop; import javafx.scene.Scene; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; /** * @author Henry Zhang * JavaFX编程 http://developers.sun.com.cn/blog/henry * JavaFX技术交流应用 http://www.javafxblogs.com */ var xx = 170; var yy = 430; var tree : ImageView = ImageView { ... http://www.javafxblogs.com/javafx-effect-wish/ JavaFX 多维数组的使用 JavaFX的sequence是与java中的数组类似的一种数据结构。sequence使用起来比数组灵活,例如可以支持元素的插入和删除,应该说更像Collection这样的数据结构。和数组明显不同的是,sequence不支持多维结构。因此,当我们需要使用多维数组时,可以在Java语言中定义一个多维数组,然后在JavaFX中调用。 下面是一个包含2维数组的Java程序: /** * * @author Henry Zhang * JavaFX技术应用 http://www.javafxblogs.com * */ public class ArrayClass { public static int arr [ ][ ] = new int[2][2]; static { for ( int i=0; i<2; i++) for ( int j=0; j<2; j++ ) ... http://www.javafxblogs.com/javafx-array/ JavaFX 语法显示工具 最近写一些关于JavaFX的文章,发现需要一个语法显示工具以方便读者阅读。其实常用的IDE如NetBeans、Eclipse等都可以对语法的关键字、字符串常量等语法成分进行区别加亮显示。在博客或网页上通常有一类称为Syntax Highlighter的软件,可以是client端或server端的工具,把文章中的程序代码转化为彩色字体显示出来。常见的编程语言如Java,C/C++,C#,VB,JavaScript,Php等都有语法工具的支持,但JavaFX还没有,于是我决定自己做一个。 无论用那种工具,有关JavaFX的关键字列表都是必需的。因此,我花了些时间在google上,终于在openjfx网站上找到了所有关键字(保留字)。接下来就是改写javascript和CSS,最终生成JavaFX语法显示的页面。例如下面的代码范例: package pacman; import java.lang.Math; import pacman.MazeData; import pacman.PacMan; /** * @author Henry Zhang */ public class MoveDecision { // x and y of an intended move public var x: Number; public var y: Number; // evaluate if the move is valid and its score if it's valid public function ... http://www.javafxblogs.com/javafx-%e8%af%ad%e6%b3%95%e6%98%be%e7%a4%ba%e5%b7%a5%e5%85%b7/ JavaFX 1.1和JavaFX 1.0的兼容性 下载了包含JavaFX 1.1.1的NetBeans 6.5.1来安装。我的机器上原来有NetBeans 6.5的IDE,可以开发JavaFX 1.0的应用。在安装NetBeans 6.5.1时,没有升级的选项,而是完全的安装。在装完之后,发现原来的NetBeans 6.5的IDE还在,这样就有两个版本的NetBeans了,感觉有点浪费空间。庆幸的是,在启动新版本后,原来NetBeans 6.5的项目都自动出现在新的IDE中。把原来项目作了编译,没有发现语法错误,可以直接运行。看来源代码级的兼容性还行。 在一些网站上看到说两个版本的JavaFX二进制不兼容,试了一下,果然无法加载。因此JavaFX 1.0的目标码要注意不要使用JavaFX 1.1的Runtime了。 (转载请注明出处:Java,JavaFX技术交流 http://www.javafxblogs.com) 比较了一下两者的JNLP文件,发现只有一行不同: JavaFX 1.0: <extension name="JavaFX Runtime" href="http://dl.javafx.com/javafx-rt.jnlp"/> JavaFX 1.1: <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.1/javafx-rt.jnlp"/> 只要原来的目标码指向旧的JavaFX Runtime,应该是可以运行的。一句话,旧的JavaFX代码如果要使用新的JavaFX运行环境,需要源代码重新编译。 http://www.javafxblogs.com/javafx-11/ 泡泡龙游戏 程序员Liuxuan620用Javafx编写了一个有趣的泡泡龙游戏,可以体现出原游戏的风格。征得同意后,我把这个游戏放在网站上了,大家可以点击下图玩一下。用左/右键瞄准,空格键发射。有兴趣的可以download并学习一下源代码,程序写得非常简洁。 http://www.javafxblogs.com/frozenbubble/ JavaFX 1.1新特性 节译自 http://javafx.com/faq/ (JavaFX博客 http://www.javafxblogs.com/ 消息) JavaFX 1.1 主要是给移动设备提供了所有必须的工具来创造JavaFX内容,同时也带来了一些与功能和性能相关的提升,包括: 。主要的JavaFX 1.1 特性: 。 JavaFX 移动设备模拟器可以使开发人员在桌面系统中直接创造复杂和描述性的移动内容 。 JavaFX 桌面运行环境的更新,提高了性能和稳定性 。 在同样的代码上可以更好地支持移动或桌面应用的开发 。JavaFX 1.1 平台特性: 。 “全屏”应用的支持 。 对需要跨域访问的应用有了更好的支持 。 跨平台内容的标准导航方式 (JavaFXGuy http://javafxguy.javaeye.com/ ) 。JavaFX 1.1 生产套件 。增加了对导出资源的支持,这些资源可以给JavaFX的移动应用使用 。JavaFX 1.1文档 。 更新了GUI教材对桌面和移动的支持 。 更新了媒体浏览器教材对高级JavaFX功能的支持 。 改进了语言参考指南 。 新的“最佳实践”编程指南,帮助开发人员充分利用高性能的VM,并提高应用中的图形、动画和媒体用户体验等。 。JavaFX1.1 语言的增强 。 增加了所有java的基本数据类型,如float,double,long, int, short, byte, char, 。 Sequence性能和资源消耗的优化 。 动画功能的动态资源优化 (JavaFXGuy http://javafxguy.javaeye.com/ ) 原文相关段落: JavaFX 1.1 delivers all of the tools necessary to create JavaFX content for use with ... http://www.javafxblogs.com/javafxfeatures/ JavaFX和Java之间的互操作性 从JavaFX官方博客上读了一篇文章,是讨论从java代码中调用JavaFX类的方法。现在的情况是,JavaFX可以调用Java的类,基本没有什么限制,而反过来,Java却不可以随便调用JavaFX的类。这点可以从JavaFX项目的编译过程看出原因。以NetBeans为例,Build的过程是先编译Java代码(javac),然后才是JavaFX代码(javafxc),这样一来,java代码不知道有javafx类,而javafx类却可以"看见"java类。搜索一下我们可以发现,很多程序员都在寻找各种从java中调用JavaFX类的方法。有一篇有趣的(英文)文章是介绍如何通过反向工程来分析JavaFX类的结构。就连那篇JavaFX官网上的文章,也采用了非标准的API来实现这一目的,而且也"保证"这种方法肯定会在下一版本中失效。 那么我们到底需不需要java和javafx之间的这种互操作性呢?我觉得这种互操作性是很有必要的。如果两者可以近似于可以混用的程度,从长远上看,JavaFX可以有更大的生命力。试想一下运用MVC的设计模式(Model-View-Controller),我们可以用java和javafx结合在一起开发应用:用java来写"M"和"C"两部分,用javaFX来写"V"部分,这将是非常有趣的一件事情。 目前,有几种"标准"的方法来从Java调用JavaFX。 1) 使用ScirptEngineManager类,的文章提到,我们可以这样做: package calc; import java.io.InputStreamReader; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class CalculatorLauncher { public static void main(String[] args) { try { ScriptEngineManager manager=new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("fx"); InputStreamReader reader = new InputStreamReader (CalculatorLauncher.class.getResourceAsStream("Calculator.fx")); engine.eval(reader); } catch (ScriptException ex) { } } } 但是,这种方法其实没有多大意义,因为它就是象System.exec(”calc”)那样做个系统调用而已。我觉得还不如用System.exec(”javafx Calculator.fx”)更加直接一些。 2) 采用Java Reflection来解析JavaFX的bytecode,得到各个method或属性,然后进行各种调用。原理上这是可行的。但是由于reflection非常复杂,使得实用性大打折扣,同时,代码也没有什么可读性了。 3)第三种方法是定义一个java的interface,然后在JavaFX中实现这个 interface。例如: public interface JavaInterface { ... } 在 MyJavaFXClass.fx中, ... http://www.javafxblogs.com/javafx%e5%92%8cjava%e4%b9%8b%e9%97%b4%e7%9a%84%e4%ba%92%e6%93%8d%e4%bd%9c%e6%80%a7/ 用JavaFX编写的游戏Pac-Man 最近读了些JAVAFX的文章,看了一些示范程序,于是决定写个游戏试一试。大概花了2周的业余时间,写成了一个Pac-Man游戏(俗称PCMAN或吃豆子)。虽然离真正的“街机”版还有一段距离,但是也基本体验了JavaFX编程的易用性。由于处于学习阶段,还有很多需要改进的地方,以后有时间慢慢改改吧。现在答应了某个英文网站去写一篇文章介绍如何编写这个游戏,因此源代码暂时不能公开。待文章发表之后,大家可以看看代码,切磋一下。 这个游戏程序主要采用了以下JAVAFX技术: 1) 绑定(binding) 2)动画(animation) 3)变换(transform) 4) Java类集成 5)声明式语言 大家可以点击以下图标启动该游戏,需要JRE1.5以上,用1.6U10以上效果更好。第一次运行时,可能需要等一些时间(因为要下载JavaFX Runtime).... 目前,JavaFX只支持Windows和Mac平台,Linux平台有一些变通的办法,可以google一下。 如果无法运行本程序,大家还可以看看YouTube上的视频: http://www.javafxblogs.com/%e7%94%a8javafx%e7%bc%96%e5%86%99%e7%9a%84%e6%b8%b8%e6%88%8fpac-man/ JavaFX SDK 1.0 正式发布 今天,期盼已久的JavaFX SDK 1.0 终于正式发布了,这是个令人振奋的消息。JavaFX平台给程序开发者和界面开发人员带来了一种全新的合作模式,使得丰富互联网应用(RIA)可以的开发变得非常简单。JavaFX是基于Java技术来实现的,因此它和Java几乎是可以无缝的集成在一起。由于运行Java的设备已经超过了50亿个(手机、PDA,电脑等等),Java程序员也超过了6百万人,JavaFX脚本语言的推出,势必会得到广泛的支持。 JavaFX里有一个比较创新的功能,就是可以拖拽-安装的魔法(JDK1.6 U10+)。浏览器里的Applet可以直接拖到桌面上来完成安装,或者运行在另外一个独立的窗口中(即脱离浏览器)。以前用过Applet的用户,应该会感到耳目一新。 其他各种有用的功能包括绑定,动画,图像效果等,都把传统的SWING或Java动画大大向前提高了一个层次。NetBeans 6.5版本是目前最好的集成开发环境IDE。我试了一下,写个“HELLO WORLD”JavaFX程序大概只要3-5分钟。 接下来我会试着写一些程序全面体会一下JavaFX的功能。 http://www.javafxblogs.com/javafx-%e6%ad%a3%e5%bc%8f%e5%8f%91%e5%b8%83/