`
Ivan_Pig
  • 浏览: 387152 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

学习JavaFX脚本语言----10,11(完)

    博客分类:
  • RIA
阅读更多
Lesson 10: Packages

目录

- Step 1: 选择一个包名
- Step 2: 创建目录
- Step 3: 添加包声明
- Step 4: 添加访问权限
- Step 5: 编译源码
- Step 6: 使用类

到这里,你对javaFX的基础应该比较熟悉了。但是对于源文件的存放,你可能还不是很清楚(你现在可能是用的一个文件夹来存放所有的例子代码)我们将把代码放到包中,来改变你对存放代码的认识。(We can improve our overall organization by placing our code into packages.)

包能够让你按功能来将代码分类保存。它还给你的类一个唯一的命名空间。我们将在下面一步步的来将Address类存放到一个特殊的包内。

-Step 1: 选择一个包名

在我们修改代码前,我们需要给包起个名字。由于我们的Address类是假设用在addressbook应用上的,所以我们使用"addressbook"作为包名。

-Step 2: 创建目录

接着,我们必须创建一个addressbook目录。这个目录里面将包含所有我们设计的属于addressbook这个包的.fx文件。你可以在任意的地方创建目录。我们在例子里面使用
/home/demo/addressbook,但是脚本必须在一个和包名相同的目录里面,这里就是
addressbook

-Step 3: 添加包声明

现在,到addressbook目录里面创建Address.fx源代码文件。粘贴下面的代码到源代码文件里面去。第一行提供了一个包声明,这将表示这个类属于addressbook这个包。

package addressbook;

class Address {
     var street: String;
     var city: String;
     var state: String;
     var zip: String;
}


注意了,如果源代码里面有包声明,它必须在其它代码的前面,即源码文件的第一行。没个源文件只能有一个包声明。

-Step 4: 添加访问权限

接下来,我们需要在Address的类和变量上加上pulic关键字。

package addressbook;

public class Address {
     public var street: String;
     public var city: String;
     public var state: String;
     public var zip: String;
}


这个关键字是5个访问限制修饰符里面的一个。我们会在下一节介绍访问限制修饰符。现在你只要知道,public关键字使得这段代码能够被其他的类和脚本访问。

-Step 5:编译源码

依然在addressbook目录里面,像平时一样使用javafxc Address.fx命令编译即可。编译完成后,这个文件夹里面将包含编译得到的.class文件。

-Step 6: 使用类

现在我们能够测试修改后的Address类了。但是我们必须先返回到父目录 /home/demo。这里我们创建一个简单的脚本packagetest.fx类测试如何使用addressbook包。

我们有两种方法来访问这个类:

// Approach #1

addressbook.Address {
     street: "1 Main Street";
     city: "Santa Clara";
     state: "CA";
     zip: "95050";
}


Approach #1使用完整的类名创建了一个对象(addressbook.Address)。对比另一种方法,这种方法比较的笨拙,但是你还是需要知道有这种写法。

// Approach #2
import addressbook.Address;

Address {
     street: "1 Main Street";
     city: "Santa Clara";
     state: "CA";
     zip: "95050";
}


Approach #2使用import关键字,import关键字允许你以简短的名字在脚本里面使用类。当程序比较大时,推荐使用这种方法,因为它是self-documenting。


Lesson 11: Access Modifiers

目录

- 默认访问权限
- package访问权限修饰符
- protected访问权限修饰符
- public访问权限修饰符
- public-read访问权限修饰符
- public-init访问权限修饰符

-默认访问权限

当你不提供任何访问权限控制符的时候,就是默认的访问权限,也就是"script-only".这也是我们在教程里面最常使用的权限。

例子:

var x;
var x : String;
var x = z + 22;
var x = bind f(q);


这一级别的访问权限使得变量只能在脚本内被initialized, overridden, read, assigned, 或 bound.其他文件无法访问。


-package访问权限修饰符

为了让变量,方法或类能被包里的其他代码访问到,使用package访问权限修饰符

package var x;


不要把这和前一节包的声明玳瑁搞混淆。


例子:

// Inside file tutorial/one.fx
package tutorial; // places this script in the "tutorial" package
package var message = "Hello from one.fx!"; // this is the "package" access modifier
package function printMessage() {
     println("{message} (in function printMessage)");
}

// Inside file tutorial/two.fx
package tutorial;
println(one.message);
one.printMessage();


你能使用下面的命令编译和运行这个例子:

javafxc tutorial/one.fx tutorial/two.fx
javafx tutorial/two

输出:

Hello from one.fx!
Hello from one.fx! (in function printMessage)


-protected访问权限修饰符

protected访问权限修饰符使得变量或方法不仅能时包里的其他代码访问到,还能使不在同一个包内的子类访问到。

例子:

// Inside file tutorial/one.fx
package tutorial;
public class one {
     protected var message = "Hello!";
}

// Inside file two.fx
import tutorial.one;
class two extends one {
     function printMessage() {
          println("Class two says {message}");
     }
};

var t = two{};
t.printMessage();


编译运行:

javafxc tutorial/one.fx two.fx
javafx two

输出:

Class two says Hello!

Note:这个访问权限修饰符不能用在类上,这就是为什么我们在类one前面写的是public的原因。

-public访问权限修饰符

一个pulibc的类,变量,方法具有最大可见度,即,它可以被任意的类或脚本访问,不管是不是在一个包内。

例子:

// Inside file tutorial/one.fx
package tutorial;
public def someMessage = "This is a public script variable, in one.fx";
public class one {
     public var message = "Hello from class one!";
     public function printMessage() {
          println("{message} (in function printMessage)");
     }
}

// Inside file two.fx
import tutorial.one;
println(one.someMessage);
var o = one{};
println(o.message);
o.printMessage();


编译运行:

javafxc tutorial/one.fx two.fx
javafx two

输出:

This is a public script variable, in one.fx
Hello from class one!
Hello from class one! (in function printMessage)


-public-read访问权限修饰符

public-read访问权限修饰符修饰的变量是公共的但是对外是只读的,只能被当前的脚本修改。如果想扩大它的可被修改的权限范围,在前面加上package或protected(ackage public-read 或者 protected public-read)这样的话,可以使得package或protected范围的代码能修改此变量。

例子:

// Inside file tutorial/one.fx
package tutorial;
public-read var x = 1;

// Inside tutorial/two.fx
package tutorial;
println(one.x);


编译运行:

javafxc tutorial/one.fx tutorial/two.fx
javafx tutorial/two

输出是"1",这证明了x能够被tutorial/one.fx外的其他代码读取到。

现在我们来试着修改它的值:

// Inside tutorial/two.fx
package tutorial;
one.x = 2; 
println(one.x);


结果是编译期错误:

tutorial/two.fx:3: x has script only (default) write access in tutorial.one
one.x = 2;
   ^
1 error

为了让此代码能运行,我们要扩大x的写的访问权限:

// Inside file tutorial/one.fx
package tutorial;
package public-read var x = 1;

// Inside tutorial/two.fx
package tutorial;
one.x = 2;
println(one.x);


现在将打印"2"。

-public-init访问权限修饰符

public-init访问权限修饰符修饰的变量能被任何包里的对象初始化。初始化后的写操作权限限制,却是和public-read类似的访问控制。(默认是脚本级别的写操作,前面加上package或 protected就扩大了访问权限了)

例子:

// Inside file tutorial/one.fx
package tutorial;
public class one {
     public-init var message;
}

// Inside file two.fx
import tutorial.one;
var o = one {
     message: "Initialized this variable from a different package!"
}
println(o.message);


编译:

javafxc tutorial/one.fx two.fx
javafx two

打印出"Initialized this variable from a different package!", 这证明了其他包内的对象能够初始化message变量。但是,接下来的写操作权限却是script-only,我们不能修改它的值。

// Inside file two.fx
import tutorial.one;
var o = one {
     message: "Initialized this variable from a different package!"
}
o.message = "Changing the message..."; // WON'T COMPILE
println(o.message);


编译出错:

two.fx:12: message has script only (default) write access in tutorial.one
o.message = "Changing the message..."; // WON'T COMPILE
^
1 error

这证明了这个很特别的行为:对象能够被任意对象初始化,但是初始化以后却是受不同的访问级别控制的。



ps:呼!花了一周时间,终于翻译完了!还好语法比较简单,翻译难度不大!如果有时间和精力,还会翻译《Building GUI Applications With JavaFX》。
17
2
分享到:
评论
8 楼 gml520 2008-12-14  
rubyeye 写道

强烈要求LZ再翻译《Building GUI Applications With JavaFX》

Sun 中国已经翻译完了
http://developers.sun.com.cn/javafx/1/tutorials/ui/index.html
7 楼 flyfan 2008-12-13  
楼主的真的为JavaFX做出了很多贡献,谢谢
6 楼 exceljava 2008-12-13  
楼主辛苦,大有裨益,多谢了。
5 楼 gml520 2008-12-13  
Ivan_Pig 写道

rubyeye 写道强烈要求LZ再翻译《Building GUI Applications With JavaFX》顺便能不能说下javaFx如何部署到浏览器里的javaFX是借助applet来部署到浏览器里面的。。。。不过按住alt键依然能够拖放到桌面上去。你可以看这里的例子。http://www.javafx.com/docs/tutorials/mediabrowser/是在浏览器里面的,如果你的jdk是6u11的话,那么按住alt键盘,就能把程序拖到桌面上了。

好像alt 这个键是自己设置的吧?
我记得 http://www.javafx.com/samples/DraggableMP3Player/ 这里的mp3 player 是直接就可以拖拽出浏览器的 。
rubyeye 写道

强烈要求LZ再翻译《Building GUI Applications With JavaFX》顺便能不能说下javaFx如何部署到浏览器里的


你可以下载mp3 Player 的源代码看看就知道了。
4 楼 Ivan_Pig 2008-12-12  
rubyeye 写道

强烈要求LZ再翻译《Building GUI Applications With JavaFX》
顺便能不能说下javaFx如何部署到浏览器里的


javaFX是借助applet来部署到浏览器里面的。。。。
不过按住alt键依然能够拖放到桌面上去。

你可以看这里的例子。
http://www.javafx.com/docs/tutorials/mediabrowser/
是在浏览器里面的,如果你的jdk是6u11的话,那么按住alt键盘,就能把程序拖到桌面上了。
3 楼 rubyeye 2008-12-12  
手机里,桌面里
2 楼 rubyeye 2008-12-12  
强烈要求LZ再翻译《Building GUI Applications With JavaFX》
顺便能不能说下javaFx如何部署到浏览器里的
1 楼 h819 2008-12-12  
赞楼主的耐心执着!

相关推荐

    学习JavaFX脚本语言--中文PDF版

    这个压缩包文件“学习JavaFX脚本语言_翻译_.pdf”显然是一个关于JavaFX编程的中文教程,对于想要深入理解JavaFX的人来说,这是一个宝贵的资源。 JavaFX最初是Sun Microsystems开发的,后来被Oracle收购并继续发展。...

    学习JavaFX脚本语言

    学习JavaFX脚本语言,你需要掌握如何声明和操作对象,以及如何利用它的图形和动画功能创建动态用户界面。随着对JavaFX深入的理解,你可以创建出交互性强、视觉效果丰富的应用程序。而要更进一步,还可以学习如何编写...

    javafx-sdk-17.0.2-lts-windows-x64

    3. **bin**: 这个目录通常包含可执行文件和脚本,如JavaFX的编译器`javac`和链接器`javafxpackager`。这些工具允许开发者编译和打包JavaFX应用程序,使其可以在不同平台上运行。 4. **src**: 可能包含了示例代码或...

    深入学习javaFx脚本语言

    深入学习JavaFX脚本语言,意味着我们将探讨其语法、特性以及如何利用它来构建动态的应用程序。 JavaFX最初引入了一种名为JavaFX Script的专用脚本语言,但后来在JavaFX 2.0中,JavaFX Script被Java API所取代,使得...

    学习JavaFX1.2脚本语言

    JavaFX是Oracle公司推出的一种用于创建富互联网应用程序(RIA)的平台,它允许开发者使用JavaFX脚本语言或Java编程语言来构建具有丰富图形界面的应用程序。JavaFX 1.2是该技术的一个早期版本,提供了许多创新特性,...

    JavaFX Script 脚本编程语言

    JavaFX Script 编程语言入门教程 JavaFX Script 编程语言是 Java 多媒体技术方面... knowledge point 10: JavaFX Script 编程语言的相关技术 JavaFX Script 编程语言相关的技术包括了 Java、JavaFX、NetBeans IDE 等。

    javafx脚本语言中文学习文档

    javafx语言中文教程,内附代码,有助于学习理解!

    javafx使用指南-目录版.pdf

    1. JavaFX Script:JavaFX 的脚本语言,用于开发 JavaFX 应用程序。 2. JavaFX API:JavaFX 的应用程序编程接口,用于开发 JavaFX 应用程序。 3. JavaFX Graphics:JavaFX 的图形编程接口,用于开发 JavaFX 应用程序...

    javafx入门教程

    本教程将指导您从基础知识开始学习JavaFX脚本语言。 JavaFX概述 JavaFX是一种新的脚本语言,由Sun Microsystems开发,用于开发RIA。JavaFX脚本语言基于Java平台,可以在Java虚拟机(JVM)上运行。JavaFX的主要特点...

    Learning the JavaFX Script Programming Language.pdf

    《深入学习JavaFX脚本编程语言》:现代GUI应用程序开发的高效工具 一、JavaFX脚本编程语言概述 JavaFX脚本编程语言是专为创建具有现代化图形用户界面(GUI)的应用程序而设计的一种高级编程语言。它以其声明式的...

    Javafx Script - Dynamic Java Scripting For Rich Internet-Client-Side Applications (Apress, 2007).pdf

    JavaFX Script是一种基于Java的脚本语言,它结合了Java的强大特性和动态脚本语言的灵活性。JavaFX Script最初由Sun Microsystems于2007年的JavaOne大会上发布,并被视为构建丰富内容应用程序的关键工具之一。它提供...

    JavaFX2.0基础教程.pdf

    Oracle宣布停止对JavaFX脚本语言的支持,并将JavaFX的部分API集成到Java标准库中,使得JavaFX成为开发跨平台富客户端应用的理想选择。 - **JavaFX2.0新特性**: - **API整合**:将原有的JavaFX脚本API集成到了Java...

    JavaFX-Script语言教程.doc

    JavaFX Script是Oracle公司推出的一种用于创建富互联网应用程序(RIA)的脚本语言,它专门设计用来构建桌面和Web上的图形用户界面。虽然JavaFX Script的流行度在JavaFX后来转向Java语言API后逐渐降低,但它依然为...

    JavaFX Script - Dynamic Java Scripting for Rich Internet-Client-Side Applications

    为了满足这些需求,Sun Microsystems 推出了 JavaFX Script,这是一种专为创建丰富的互联网客户端应用程序而设计的动态脚本语言。本文将基于提供的文档信息对 JavaFX Script 的核心概念、优势以及应用场景进行深入...

    JavaFX-Resizable-Draggable-Node

    - JavaFX应用程序可以使用Java、Kotlin、Scala等JVM语言编写,也可以用Scene Builder设计界面布局。 2. **JavaFX中的节点(Node)**: - 节点是JavaFX图形场景图的基本构建块,包括按钮、文本框、图像视图等。 -...

    JavaFX Script 语言教程(面向Swing 程序员).rar

    对于Swing程序员来说,学习JavaFX Script 可以拓宽他们的技能范围,为他们提供更现代的UI开发工具。Swing虽然功能强大,但在视觉效果和交互性上可能略显传统,而JavaFX Script 则提供了更先进的解决方案。 这个...

    JavaFX高级教程:JavaFX2.0的FXML语言(中文版)

    10. **使用脚本语言**:如果需要,可以通过绑定和表达式在FXML中使用Java脚本来增强功能。 11. **使用样式表**:应用CSS样式表,以实现自定义的视觉效果和主题。 通过以上步骤,我们将能够完全理解如何使用FXML来...

    javaFx script

    学习JavaFX Script的最佳起点是官方提供的教程,该教程详细介绍了JavaFX Script的核心概念和语言语法。通过这个教程,开发者可以逐步掌握JavaFX Script的基础知识,并进一步了解如何构建图形用户界面(GUI)应用程序...

    javaFX 入门教程

    1. **高生产力的脚本语言**:JavaFX脚本语言设计得易于学习且表达能力强,支持声明式的编程风格,使得开发者可以专注于应用程序逻辑而非底层实现细节。 2. **静态类型**:虽然JavaFX脚本语言采用了类似脚本语言的...

    JavaFX2.0基础教程(整合版)

    - **Oracle 接手**:Oracle 收购 Sun 后,在 2010 年 JavaOne 大会上宣布将停止对 JavaFX 脚本语言的支持,并将 JavaFX 的 API 导入 Java,这意味着 Java 开发者无需学习新的脚本语言即可利用 JavaFX 的功能。...

Global site tag (gtag.js) - Google Analytics