JFX基础
这个语言支持常见的变量类型,比如字符串、整型、浮点型和布尔值。对于list和array的扩展支持的语法,在我看来非常强大。这个语言还提供了异常的创建和处理,并且引入了新的想法,即任何对象可以被抛出,不仅仅是标准的Java Throwable类型。JFX脚本还可以导入Java类、创建Java对象和调用他们的方法。
JFX对象通过声明的方法来创建。这对于那些为“swing”Java用户接口类提供简化的class非常有用。我们在下面的完整脚本中查看一下JFX对象是如何通过声明的方式来创建的。
importjavafx.ui.*;
Frame{
title:"HelloWorldfromJavaFX"
width:200
height:80
content:Button{
text:"HelloWorld"
}
visible:true
}
在这个例子中,Frame和Button是用来隐藏将在屏幕上显示出来的JFrame和JButton对象的创建细节的脚本类型。这个Frame类有名为“title”、“width”、“height”、“content”和“visible”的公共“属性”,它们都在声明中被设置了。
消息处理问题
JFX也有每一个图形用户接口工具都会遇到的问题。点击按钮之类的用户事件一定不能和需要长时间执行任务的事件处理线程绑定,因为在该任务执行的时候,这个接口会毫无反应。JFX提供了“do”和“do later”原语来处理这个问题。我使用一段脚本来试验JFX显示出从天气预报服务站点检索出来的数据,其中使用了“do later”。首先,我定义了一个叫做WeatherData的JFX类。这个类有两个属性和一个操作。
importjavafx.ui.*;
importjava.net.URL;
importjava.lang.StringBuffer;
importjava.lang.System;
importjava.io.InputStreamReader;
importjava.io.BufferedReader;
classWeatherData{
attributesource:String;
attributetext:String;
operationupdate();
}
// 注意这个JFX类的声明只包括了操作的签名,真正的代码分开定义如下:
operationWeatherData.update(){
varcontent=newStringBuffer("");
dolater{
varurl=newURL(source);
varis=url.openStream();
varreader=newBufferedReader(newInputStreamReader(is));
varline;
while(true){
line=reader.readLine();
if(line==null){break;
}
content.append(line);
content.append("
");
}//endwhile
is.close();
text=content.toString();
}//enddolater
}
/*现在创建窗口来表示用户接口。注意这个Frame被定义成有一个WeatherData类的本地实例。其中的URL是用来获得我所在的县下周的天气预报。*/
Frame{
varwdata=WeatherData{
text:"initialized"
source:"http://forecast.weather.gov/MapClick.php?zoneid=TXZ173&TextType=1"
}
title:"WeatherForcast"
width:400
height:400
background:cyan
content:BorderPanel{
border:EmptyBorder{top:10left:10bottom:10right:10
}
top:Button{
text:"update"
action:operation(){wdata.update();}
height:80
}
center:TextArea{text:bindwdata.text
}
}//closecontent
visible:true
}
当这个按钮被点击之后,更新操作被调用,创建一个线程来执行“do later”中的后续代码来填充文本变量。注意TextArea的文本内容是通过wdata.text变量的“bind”关键字来定义的。当该变量的内容被更新之后,新的文本将自动的出现在窗口当中。
JFX所缺少的东西
JFX语言提供的功能当中最明显的缺憾就是少了像处理swing对象一样方便的操纵XML数据的方法。当然你可以创建自己定制的Java类,并在JFX脚本中使用它们,但是如果能够在处理基于XML的Web service中使用XQuery或者XPath的语法,那么就太方便了。
IDE的支持
我在NetBeans 5.5和Eclipse IDE中都找到了插件。NetBeans的插件提供了对编辑语法和用法的支持,但是不完全JavaDocs类型的文档。NetBeans插件不支持图形接口版面,但是这应该不是很难增加。另外一个商业的IDE,ReportMill,正在尝试在他们的报表设计编辑器中支持JFX。
分享到:
- 2008-05-09 23:35
- 浏览 1201
- 评论(0)
- 论坛回复 / 浏览 (0 / 1735)
- 查看更多
相关推荐
在本案例中,"Web-service-ms-cliente"是一个专为APEC大学设计的桌面客户端,目的是帮助用户方便地注册课程。这个客户端是利用Java语言开发的,这意味着它利用了Java的稳定性和跨平台特性,可以运行在各种操作系统上...
3. **JavaScript (JS)**: JavaScript是Web开发中的客户端脚本语言,主要用于网页交互和动态效果。它与Java虽然名字相似,但两者并无直接关联。JavaScript API通常指的是浏览器提供的DOM(Document Object Model)...
在Windows编程中,Java作为一种跨平台的编程语言,可以通过Java的Swing或JavaFX库创建桌面应用程序。Windows编程通常涉及到与操作系统进行交互,例如使用JNA(Java Native Access)或JNI(Java Native Interface)来...
6. **JavaFX Script**:引入了新的富客户端开发平台,虽然现在已经被JavaFX取代,但在当时是重要的图形用户界面工具。 二、J2EE 1.6 J2EE 1.6是用于构建分布式企业级应用的平台,它包含了多个服务和组件,包括: 1...
- **JSP指令**:用于控制JSP页面的行为,例如设置脚本语言或导入包等。 - **表达式语言(EL)**:简化了对JavaBean属性的操作,可以更直观地访问对象属性。 - **JSP标准标签库(JSTL)**:提供了常用标签来完成页面中的...
Swing与Servlet通信是Java开发中常见的客户端-服务器交互方式,尤其在构建桌面应用程序与Web服务接口时。Swing作为Java的图形用户界面(GUI)库,提供了丰富的组件和工具来创建美观的桌面应用,而Servlet是Java Web...
Java高级程序设计是一门深入探讨Java编程语言各个高级特性的学科,主要涵盖了GUI程序设计、数据库程序设计、网络程序设计、多媒体程序设计以及JSP和J2EE企业级开发等多个重要领域。以下是对这些主题的详细说明: 1....
1. `src/main/java`: 业务逻辑代码,可能包含控制器(Controller)、服务(Service)、模型(Model)和DAO(Data Access Object)等类。 2. `src/main/resources`: 配置文件,如application.properties或yaml文件,...
例如,Adobe的Flex、Sun的JavaFX、Microsoft的WPF/Silverlight以及基于标准W3C技术的Ajax,都是实现RIA的不同选择。 Ajax,即Asynchronous JavaScript and XML,是构建RIA的核心技术之一。它允许网页部分更新,而...
Java客户端可以是Swing或JavaFX等桌面应用,也可以是Android应用,或者是使用Java编写的Web浏览器插件。客户端负责展示用户界面,处理用户输入,并通过网络通信协议向服务器发送请求。 2. **Java服务器**:服务器端...
除了这些核心组件,JavaEE API还包括Web服务(JAX-WS, JAX-RS),安全管理(JAAS),以及用于开发富互联网应用程序(RIA)的JavaFX等技术。在实际开发中,JavaEE API结合IDE(如Eclipse或IntelliJ IDEA)和构建工具...
JSP是一种基于Java的服务器端脚本技术,它允许将动态内容嵌入到静态网页中,从而创建功能丰富的Web应用程序。JSP页面本质上是Servlet的扩展,可以包含HTML标记、Java代码片段和预定义的JSP指令和动作。以下是JSP中的...