`
jtribe
  • 浏览: 5880 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

开始走进JavaFX

    博客分类:
  • JAVA
阅读更多

很遗憾,JavaFX目前没有发布Linux版本!我使用
http://deadlock.netbeans.org/hudson/job/JavaFX_NB_daily/
的NetBeans日构建的插件(11月24日停止更新了),运行JavaFX1.0的例子程序报错!郁闷,看来只能等Sun放出Linux版本的JavaFX了!还有,JavaFX目前的语法和之前的语法好像有了很大的区别!所以才想到翻译这个文档,计划一天翻译一到两节!
原文地址:http://java.sun.com/javafx/1/tutorials/core/index.html


Lesson 1: Getting Started with JavaFX Script

目录

- Step 1 : 下载并安装JDK
- Step 2 : 选择开发环境
- Step 3 : 下载并安装JavaFX编译器

Step 1: 下载并安装JDK

JavaFX脚本语言是建立在Java平台上的脚本语言,你的机器需要安装JDK5或者JDK6(JDK6在速度方面有提高)。如果你还没有安装,请在开始学习此教程前下载和安装JDK6或者JDK5。

Step 2: 选择开发环境

关于JavaFX开发环境,你有两个选择:使用IDE或者使用文本编辑工具。至于选择哪种开发环境,完全在于个人习惯。但是下面的总结能帮助你做出一个合理的选择。

普遍看法:(不翻译了,反正就是推荐使用IDE,也就是Netbeans了,目前就NetBean有此插件。要不你就用文本编辑工具吧!)

*IDEs present the most commonly used functions as Graphical User Interface (GUI) elements, and offer many useful features, such as automatic code completion. An IDE also gives you immediate feedback on errors and highlights code so that it is easier to understand.

* A text editor provides simplicity and familiarity. Experienced programmers often rely on their text editor of choice, preferring to work in that environment whenever possible (some editors, like vi, have a rich set of built-in keystroke commands that some programmers simply cannot live without!)

The officially supported IDE for the JavaFX Script programming language is NetBeans IDE 6.5. The NetBeans IDE website provides instructions for downloading, installing, and configuring the IDE.


Step 3: 下载并安装JavaFX编译器

你还需要下载和安装JavaFX脚本编译器和运行时环境。一个途径就是下载JavaFX SDK,它除了提供JavaFX编译器,运行时环境还提供了一些其他的工具。

另一个途径就是从openjfx项目的网站上下载最新的编译器二进制文件。编译器是用Java写的,安装方法就是解压缩下载的文件,然后将javafxc和javafx tools添加到你的路径下去。具体的方法在PlanetJFX WiKi上有完整介绍!

最后,如果你想冒险尝试(if you want to live on the bleeding edge)----你可以加入OpenJFX编译器项目,创建你自己的一个拷贝,然后自己编译源码。(如果你选择这个途径,你还需要Apache Ant1.7.0,较新版本的Subversion---写此文章时最新版本是1.5.4)。想获得更多关于从源码创建编译器的信息,请浏览Planet JFX Wiki.


Lesson 2: Writing Scripts

目录

- 编写一个简单的计算器
- 声明变量
- 方法的定义和执行
- 给方法传递参数
- 方法的返回值
- 使用命令行参数

-编写一个简单的计算器

开始之前,你要有一个calculator.fx文件,包含如下代码。

def numOne = 100;
def numTwo = 2;
var result;

add();
subtract();
multiply();
divide();

function add() {
     result = numOne + numTwo;
     println("{numOne} + {numTwo} = {result}");
}

function subtract() {
     result = numOne - numTwo;
     println("{numOne} - {numTwo} = {result}");
}

function multiply() {
     result = numOne * numTwo;
     println("{numOne} * {numTwo} = {result}");
}

function divide() {
     result = numOne / numTwo;
     println("{numOne} / {numTwo} = {result}");
}

 

JavaFX脚本语言是变异型语言,就是说所有的源代码在运行前都需要先转化为Java字节码!

下面的命令将会编译calculator脚本:

javafxc calculator.fx

编译完成后, 你会发现相应的Java字节码被生成,并且被放置到了叫做calculator.class的文件里面。你还会发现另一个文件calculator$Intf.class被创建。这个文件是被提供来运行应用的---你可以忽略它,但是不要删除。

现在你可以用下面的命令运行编译后的类了。

javafx calculator

输出:

100 + 2 = 102
100 - 2 = 98
100 * 2 = 200
100 / 2 = 50


这是一个很小的程序,但是它向你展现了JavaFX里面一些很重要的组成部分。学习这些部分是你掌握JavaFX的第一步。

Note:JavaFX语言不难掌握,但是由于你是第一次接触它,我们一次只介绍一部分的知识点以便你能更好的掌握它。我们的宗旨是方法的明了。我们会在后面的章节介绍更高级的用法。

-声明变量

让我们来仔细看一下calculator.fx这个例子---后面我们会扩展这个例子。

第一段代码定义了几个变量:

def numOne = 100;
def numTwo = 2;
var result;

变量可以由var或者def关键字来定义。两者的区别是var定义的变量可能在程序的执行过程期间有新的值被赋给它,而def定义的变量会一直保留第一次被赋予的值!我们给 numOne,numTwo变量赋了值,但没有给result变量赋初值,因为这个变量将会保存我们的计算结果。

变量名一般由字母和数字组成,且不能以数字开头!建议以小写字幕开头,如果变量包含不止一个单词,从第二个单词开始,大写每个单词的第一个字母,如上例所示(numOne)。

Note:你可能注意到了,我们并没有做特别的规定让变量去存储一个数字(对字符串或其他类型的数据也是一样的)。编译器足够的聪明,能够从变量所存储的内容判断出类型。这就是类型猜测.类型猜测使你的工作简单化,像编写脚本语言一样,因为你不需要再定义变量的类型了。


-方法的定义和执行

余下的源代码定义了一些方法,add,subtract,multiply和divide。

function add() {
     result = numOne + numTwo;
     println("{numOne} + {numTwo} = {result}");
}

function subtract() {
     result = numOne - numTwo;
     println("{numOne} - {numTwo} = {result}");
}

function multiply() {
     result = numOne * numTwo;
     println("{numOne} * {numTwo} = {result}");
}

function divide() {
     result = numOne / numTwo;
     println("{numOne} / {numTwo} = {result}");
}

 

方法是一段可执行的代码块,执行特定的任务!在我们的例子中,每个方法执行一个数学计算并打印结果!将执行的代码放置到方法中可以使你的程序更加的易读,易用和除错!方法体被大括号包围,方便辨认方法的开始和结束!

如果不调用方法,方法不会真正的执行!这使得你可以在你程序的任何地方去执行方法!不管方法的定义是在调用的前面还是后面,都没有关系!在我们的例子中,我们在方法定义前就执行了方法!

方法执行代码如下:

add();
subtract();
multiply();
divide();


-给方法传递参数

下面我们将修改calculator代码使其能接受参数!参数是你在执行方法时传递给方法的值!使用这种途径,我们的计算器能运算任意两个数的四则运算,而不是只能运算硬编码给numOne和numTwo的值。

var result;

add(100,10);
subtract(50,5);
multiply(25,4);
divide(500,2);

function add(argOne: Integer, argTwo: Integer) {
     result = argOne + argTwo;
     println("{argOne} + {argTwo} = {result}");
}

function subtract(argOne: Integer, argTwo: Integer) {
     result = argOne - argTwo;
     println("{argOne} - {argTwo} = {result}");
}

function multiply(argOne: Integer, argTwo: Integer) {
     result = argOne * argTwo;
     println("{argOne} * {argTwo} = {result}");
}

function divide(argOne: Integer, argTwo: Integer) {
     result = argOne / argTwo;
     println("{argOne} / {argTwo} = {result}");
}

 

现在的输出为:

100 + 10 = 110
50 - 5 = 45
25 * 4 = 100
500 / 2 = 250


在这一个版本里面我们移除了numOne和numTwo这两个变量,因为不再需要它们了!取而代之的是我们修改了方法的定义,需要传递两个参数给方法。每个参数都有名称,后面跟着一个冒号加类型。当方法接受多个参数的时候,参数之间用逗号隔开。

-方法的返回值

方法可能会有返回值。比如,add方法可以修改为返回计算结果,如下:

function add(argOne: Integer, argTwo: Integer) : Integer {
     result = argOne + argTwo;
     println("{argOne} + {argTwo} = {result}");
     return result;

}

 

add方法现在可以像这样运行:

var total;

total = add(1,300) + add(23,52);

 

如果没有返回值需要返回,默认返回Void。


-使用命令行参数

我们可以进一步的修改calculator程序来接受命令行参数。这可以使终端用户在运行时决定需要计算的数值。

var result;

function run(args : String[]) {

     // Convert Strings to Integers
     def numOne = java.lang.Integer.parseInt(args[0]);
     def numTwo = java.lang.Integer.parseInt(args[1]);

     // Invoke Functions 
     add(numOne,numTwo);
     subtract(numOne,numTwo);
     multiply(numOne,numTwo);
     divide(numOne,numTwo);
}

function add(argOne: Integer, argTwo: Integer) {
     result = argOne + argTwo;
     println("{argOne} + {argTwo} = {result}");
}

function subtract(argOne: Integer, argTwo: Integer) {
     result = argOne - argTwo;
     println("{argOne} - {argTwo} = {result}");
}

function multiply(argOne: Integer, argTwo: Integer) {
     result = argOne * argTwo;
     println("{argOne} * {argTwo} = {result}");
}

function divide(argOne: Integer, argTwo: Integer) {
     result = argOne / argTwo;
     println("{argOne} / {argTwo} = {result}");
}

 

这次修改新增了一些新的知识点,最值得注意的就是run()方法。不像其他的方法,run()是一个特殊的方法,是程序的入口点!run()方法会在args变量里面保存所有的命令行参数,以String Sequences的形式保存(Sequences是有序的对象链,很像其他编程语言里面的数组;在后面的章节将详细介绍)。

运行这段代码,现在你必须要设定第一个和第二个参数。

javafx calculator 100 50

输出:

100 + 50 = 150
100 - 50 = 50
100 * 50 = 5000
100 / 50 = 2

Note:在之前的所有版本里面,我们并没有提供run()方法。我们只是输入代码然后它就执行了。默认情况下,编译器会插入一个无参的run()方法,然后在里面放入要执行的代码!

我们重新定义了numOne和numTwo变量,这次是才run()方法内定义的,我们的计算functions需要数字类型的参数,但是命令行参数是字符串,我们在将命令行参数赋给方法前,必须要要将每个命令行参数从String转化为Integer。

// Convert Strings to Integers
def numOne = java.lang.Integer.parseInt(args[0]);
def numTwo = java.lang.Integer.parseInt(args[1]);

 

我们借助Java语言来完成这个转换。这个简单的脚本语言能直接使用Java语言而获得很强大的功能(Tapping into the existing Java ecosystem as needed brings tremendous power to this otherwise simple scripting language. )

分享到:
评论

相关推荐

    JavaFX 基础

    JavaFX是开发Java GUI程序的新框架,取代了Swing和AWT, 用于开发富英特网应用 AWT可以开发简单的用户界面,但不适合开发综合的GUI项 目,AWT容易被特定的平台错误影响  Swing组件使用Java代码在画布上直接绘制,更少...

    java程序设计高级界面开发代码.zip

    总的来说,这份"java程序设计高级界面开发代码.zip"资料将带你走进Java界面编程的深处,通过实践代码,你可以更直观地理解高级界面设计的各种技巧和最佳实践。无论是Swing的组件组合,还是JavaFX的现代特性,都将助...

    ext学习笔记教程和实例

    本教程将带你逐步走进EXTJS的世界,通过实际的开发实例来帮助你理解并掌握EXTJS的基本概念和使用技巧。 EXTJS的主要组成部分包括以下几个方面: 1. **组件(Components)**:EXTJS的核心是其组件系统,这些组件...

    java版推箱子

    本文将详细介绍如何使用Java编程语言来实现这款经典游戏,带你走进Java游戏开发的世界。 一、Java基础与游戏框架 在着手编写推箱子游戏前,我们需要对Java有基本的了解。Java是一种面向对象的编程语言,具有跨平台...

    welcome-to-java.zip_Welcome!

    在深入学习后,你可能会接触到更高级的主题,如网络编程、数据库连接(JDBC)、Swing或JavaFX图形界面开发,甚至是Java的服务器端技术如Servlet和JSP,这些都是构建复杂应用程序的关键技能。 总之,"Welcome-to-...

    java 植物大战僵尸

    本篇将详细探讨一个由Java编写的植物大战僵尸游戏,让我们一同走进这个用代码构建的绿色战场。 首先,Java作为一款跨平台的面向对象编程语言,其丰富的库和强大的性能使其成为开发2D游戏的理想选择。在这个项目中,...

    连连看源程序——java

    本篇将深入探讨如何使用Java编程语言实现连连看源程序,让我们一起走进Java编程的世界,揭秘连连看游戏背后的逻辑。 一、Java基础 在开始构建连连看源程序之前,我们需要对Java编程有基本的了解。Java是一种面向...

    传智播客-Java游戏开发推箱子第03天源码资料

    当玩家移动时,我们需要更新游戏状态并检查是否合法,例如玩家不能走进箱子,也不能离开地图。 在推箱子游戏中,核心算法设计是解决游戏逻辑的关键。这可能包括深度优先搜索(DFS)、广度优先搜索(BFS)或其他路径...

    Java语言入门(chm)

    这个CHM版本的教程将引导你逐步走进Java的世界,了解其核心概念和编程技巧。 首先,Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)在1995年发布。它的设计目标是“一次编写...

    java基础笔记

    Java基础教程笔记是学习Java编程语言的入门指南,旨在帮助初学者从零开始掌握这门强大的面向对象编程语言。这份笔记涵盖了理论知识、实际操作以及编程格式等基础内容,对于那些希望快速上手Java的人来说非常有帮助。...

    坦克大战源码

    本篇文章将深入探讨如何用Java语言来编写坦克大战的源码,带你走进编程与游戏开发的奇妙世界。 首先,我们要理解坦克大战的基本规则和游戏逻辑。游戏中,玩家操作一辆坦克,目标是保护基地,同时消灭不断出现的敌方...

    java入门学习教程

    Java编程语言是软件开发领域中最...总的来说,这个"java入门学习教程"将引导你逐步走进Java的世界,从基本概念到实际编程,让你具备开发简单Java程序的能力。通过深入学习和实践,你将能够掌握更复杂的企业级应用开发。

    基于java开发的蜘蛛纸牌的实现

    本文将详细介绍如何使用Java编程语言来实现这款经典游戏,带你走进Java编程与游戏开发的世界。 首先,我们要理解蜘蛛纸牌的基本规则。游戏开始时,会有一叠牌面朝下的牌堆和八列牌,每列可以有零到十五张牌,玩家的...

    java咖啡馆(从零学起)

    总之,《Java咖啡馆:从零学起》是一本全面且适合初学者的Java教程,它将带领你走进Java的世界,从零开始,逐步成长为一名熟练的Java程序员。通过这本书,你可以系统地学习Java语言,并为未来更深入的开发工作打下...

    Java连连看代码

    本篇文章将围绕“Java连连看代码”这一主题,详细解析这款游戏的源代码,带你一步步走进Java游戏开发的世界。 1. **Java语言基础** Java作为一门广泛使用的面向对象编程语言,具有跨平台性、安全性和高效性。在...

    基于初学java的全面系统的课件

    Java编程语言是软件开发领域广泛使用的工具,尤其适合初学者入门。这个名为“基于初学java的全面系统的课件”的资源提供了系统性的学习路径,...这个全面系统的课件将引导初学者一步步走进Java的世界,开启编程之旅。

    用Java实现的贪吃蛇小游戏.zip

    本文将深入探讨如何使用Java编程语言实现这样一个小游戏,带你走进Java编程的世界,理解游戏开发的基本原理。 首先,让我们从标题开始。"用Java实现的贪吃蛇小游戏"表明这个项目是利用Java语言编写的一款贪吃蛇游戏...

    Java游戏编程初级教程

    在开始游戏编程之前,首先需要了解Java语言的基础。这包括变量、数据类型、运算符、控制流程(如if语句、循环)、函数以及类和对象等核心概念。掌握这些基础知识是编写任何程序的基础,对于游戏编程来说,理解面向...

    俄罗斯方块

    本文将深入探讨如何使用Java编程语言来实现这一经典游戏,让我们一起走进Java实现俄罗斯方块的世界。 一、基本概念 1. **游戏逻辑**:俄罗斯方块的基本原理是,不同形状的“方块”从屏幕顶部随机落下,玩家通过...

    black_art_of_java_game_programming.rar_java programming

    这本书将引领读者逐步走进这个激动人心的领域。 Java编程是本书的核心内容,它是目前最广泛使用的编程语言之一,尤其在服务器端和跨平台应用中。Java以其“一次编写,到处运行”的特性,使得开发者能够构建可在不同...

Global site tag (gtag.js) - Google Analytics