27
2013
12

JavaFX中UI线程冲突问题

与Android一样,JavaFX也不允许在UI线程之外对高级界面进行更新,比如网络线程返回了数据,想要在界面上刷新出来,如果在网络线程里直接处理就可能抛出异常。Android可以通过Handler发送Message实现像通知UI线程,保证线程安全,JavaFX也有类似的方法。

1).javafx.concerrent.Worker接口,主要提供了Task和Service两个类,用来建立能与UI线程安全通信的线程。Task和Service区别不大,Service提供了一些重置、重启之类的方法,可以理解成Task是执行一次性的任务,Service提供服务。示例:

06
2013
09

JavaFX的Canvas

JavaFX的Canvas与HTML5的Canvas非常类似,甚至连API都基本相同。使用方法无非也就是一些画线、画框、绘图图片什么的,这里我挑一些要点做简单介绍,具体内容可参照官方Canvas教学

  • 创建Canvas并获得绘制2D绘图环境:

23
2013
08

JavaFX实现拖拽

2013-08-23_110019.png

如图所示,这个例子是上一篇文章的例子修改而来的,实现了把右边列表的内容拖拽到左边的pane中去,结合上一篇列表的例子,本篇就讲解一下JavaFX中如何实现此类拖拽操作的功能。

……


22
2013
08

JavaFX中使用列表

JavaFX中的列表使用起来相对复杂一些,不过功能很强大,包括ComboBox、ListView等,基本功能都是列表,构建方式也大致相同,这里以ListView为例做简单介绍。


list.PNG

……

09
2013
08

JavaFX的Dialog扩展库

目前JavaFX没有提供直接使用的类似MessageBox、Dialog的API,必须自己构建界面去实现,相当麻烦。这里介绍一个老外封装好的一套Dialog,涵盖了所以类似其它平台的Dialog功能,包括提示、警告、错误、询问对话框等,效果如图:

javafx-information-dialog.png

使用方法很简单,导入jar包,然后使用如下Api即可:

Dialogs.showWarningDialog(stage, "Careful with the next step!", "Warning Dialog", "title");

下载jar包以及了解更多用法,请到其Github主页


09
2013
08

Java中使用js脚本

JAVA其实早在JDK1.6中就集成了JSR223包括JavaScript、Python等脚本功能。当我们遇到需要支持插件等拓展功能的项目时,比起反射,脚本更加简单易用。下面以JavaScript为例,简单介绍一下脚本在Java中的用法。

初始化脚本引擎:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("javascript");

08
2013
08

使用可视化布局工具开发JavaFX应用

Oracle为JavaFX提供了可视化的布局工具JavaFX Scene Builder,用来替代繁琐的界面设置代码和脑补预览,并可以方面地将界面控件与逻辑代码绑定,点击进入官方下载

JavaFX Scene Builder其实是一款JavaFX使用的FXML编辑器,类似于android的布局系统,初步使用了一段时间,发现体验很不错,要优于大部分Swing插件,当然比起微软的那一套还有差距。得益于JavaFX优雅的设计,它在使用时不需要设置一大堆容器和复杂的布局,基本上拖拖拽拽和简单的设置就能实现大部分布局,此外还支持css以及界面预览功能,可以简单查看实际运行效果。

2.png

……

07
2013
08

JavaFX简介与使用入门

JavaFX是Sun于2007年推出的富互联网应用开发技术(RIA)。所谓RIA,就是页面体验和数据交互都基于web,提供跨平台,拥有丰富的体验,且易于部署的应用程序。了解更多RIA可以参照维基百科上的内容。

1_book_swiss_armyknife

RIA普遍被认是未来互联网应用发展趋势的热门技术,比如Air、Flex、Silverlight、Google GWT甚至HTML5等。JavaFX诞生之初,adobe借助flash普及,谷歌、微软借助系统和浏览器,优势都很明显,相比之下JavaFX形势不乐观也受到较少的关注。2007年Sun发布JavaFX1.0的时候以JavaScript作为语言,具有一定的学习成本,使用起来也并不方便。后来Oracle发布JavaFX 2.0,增加了很多新特性,并明智地抛弃js选择Java作为开发语言。这样一来,广大开发者可以毫无困难地使用JavaFX,并吸收Java大量的现有框架。JavaFX 2.0使用起来有点像简洁版的Swing,但其强大的地方在于可以使用FXML定义应用的布局实现逻辑与界面分离,有点类似Android的布局系统,这也是经典的MVC理念,官方还提供完善的布局设计工具,体验要优于任何Swing插件。此外,JavaFX 2.0还可以开发3D应用、媒体应用等,支持GPU渲染,更厉害的是像页面一样支持CSS,可以轻松实现自定义的界面风格。到目前为止,JavaFX支持windows、mac、linux平台,ARM版的也在准备中,事实上已经可以通过RoboVM在IOS上运行JavaFX了,有迹象表明官方也将对移动平台提供支持。由此可见选择JavaFX的有着众多优点,虽然HTML5在崛起,而JavaFX也有依赖较新版本JRE的软肋,但凭借Oracle的推广和近乎无限的Java资源,JavaFX必将在未来RIA第一阵营中占有一席之地。

……

17
2013
04

用C#实现Android游戏界面设计器遇到的字体问题

之前写过一个PC端编写Android游戏界面的工具,用以实现VisualStudio般拖拖拽拽设计界面的体验。但是字符串绘制一直不完美,导致并不能完全的“所见即所得”。

起初我以为Android默认字库跟微软雅黑一样(看上去很像),于是在C#里使用微软雅黑,但总对齐不准确,样式也有细微偏差,与真机效果有一定差距。百度才知道Android用的是谷歌自己的“Droid Sans Fallback”字体(百度可下载TTF文件)。

C#中使用自定义字库的方法:

          PrivateFontCollection privateFonts = new PrivateFontCollection();

«1»