【转】JavaFx 语法示例

  http://www2.matrix.org.cn/resource/openjfx_reference/JavaFX_Programming_Language_CN.html
JavaFx 语法示例

JavaFX 语法

     在正式开始学习JavaFX,让我们浏览一遍该语言的语法要点。如果你非常熟悉Java语言,这些语法的大多数会让你感到非常熟悉,但是有一些会相当不一样。

JavaFX 原始类型

     JavaFX 支持原始类型:String (对应于 java.lang.String), Boolean (对应于 java.lang.Boolean), Number (对应于 java.lang.Number) Integer (对应于 byte,short,int,long,BigInteger).

JavaFX 变量

一个JavaFX变量使用var关键字声明。看下面的例子:

var x:Number = 0.9;

var name:String = "John";

var y:Integer = 0;

var flag:Boolean = true;

var numbers:Number = [1,2,3,4,5];

JavaFX 操作符

众所周知的Java操作符&&, || ! JavaFX中采用下面的形式:

·                     Java: && JavaFX: and
·                     Java: || JavaFX: or

·                     Java: !     JavaFX: not

JavaFX 方法

JavaFX 支持这些方法. 具有参数、变量声明和返回值的方法举例:

function taxes(x) { var t:Number = (19.0/100.0)*x; return t; }

JavaFX if 语句


JavaFX中,你你能通过使用if语句使用条件判断。

if (条件) { //动作 } else if (条件) { //动作 } else { //动作 }

JavaFX while 语句

这个 while 语句同在Java中的while语句相似。 while (条件) { //动作}

JavaFX for 语句

for 语句用于循环和间隔(间隔使用方括号[] .. 符号表示).

//i 将取值: 0, 1, 2, 3, 4, 5象在 (i in [0..5]) { //伴随 i的动作 }代码块中

JavaFX 过程

JavaFX 过程以operation 关键字为标志。一个简单的例子:

operation startClock() {do{ while(true) {

if(seconds>=360) {seconds = 0; seconds = [0,6..360] dur 60000 linear;}

if(minutes>=360) {minutes = 0; minutes = [0,6..360] dur 3600000 linear;}

if(hours>=360) {hours = 0; hours = [0,6..360] dur 43200000 linear;} } }}

JavaFX

    JavaFX 类使用class关键字. 一个 JavaFX 类能够使用extends 关键字继承多个类使用逗号分割这些类的名字。在花括号中间你可以放属性、方法和过程,例如下面的例子:

class Order {

attribute order_nr: String;

attribute ordertype: Order inverse Order.products;

attribute products: Order* inverse Order.ordertype;

function getOrderNr(): String;

operation addOrder(order: Order);

}

    注意属性使用attribute关键字声明,方法体和过程不在类体中,它们单元定义在类声明以后,在下文你很快就能看到。 inverse 子句是一个可选项 ,它表示一种同在类中另一个属性的双向关系。在这个案例中JavaFX将自动完成更新(插入、替代和删除)你能在Java.net上找到更完整的文档

熟悉JavaFX

    在本小节,您将会看到一系列的小例子,这些例子覆盖JavaFX的各种特性和功能。主要目的是让你熟悉JavaFX代码和JavaFX应用程序的逻辑。第二个目标是当你需要开发仅仅需要几行代码就会有非常酷的GUI,动画和好的效果时候使你确信JavaFX值得好好研究一下。所有列出的例子将介绍关于JavaFX的技巧。每一个例子只使用很少的描述处理,所以不要想找到大量的注释。所有这些可访问的例子你都是你自己就能运行的,所以让我们开始吧。当我们需要使用System.out.println 打印属性值时候,你可以把它的名字放进含有引用的字符串,象源码列表2中所示的那样。

源码列表2

//带有应用文本的表达式

import java.lang.System;
var mynumber:Number = 10;
System.out.println("数字是: {mynumber}");

结果: 数字是: 10
JavaFX
支持变量的计数这样一个有用的功能。这个功能利用下面的三个操作符实现:

·                     ?: 可选的(可能为 null)

·                     +: 1或多个

·                     *: 0或多个

源码列表3

//变量计数

import java.lang.System;
var mynumbers:Number* = [1,2,7];
System.out.println("数字是: {mynumbers}");

结果: 数字是: 1 2 7
    在JavaFX, 在声明部分不指定变量的类型是可能的。 这不会产生错误,因为JavaFX 将在该变量的使用中自动发现它的类型。

源码列表 4

//变量类型是可选的

import java.lang.System;
var days = ["Monday,","Friday,","Sunday"];
System.out.println("你必须工作: {days}");

结果: 你必须工作: Monday, Friday, Sunday
你可以使用sizeof 操作符得到一个数组的大小:

源码列表 5

//得到一个数组的大小

import java.lang.System;
var lotto = [21,30,11,40,5,6];
System.out.println("数组大小:{sizeof lotto}");

结果: 数组大小: 6

您能使用 [] 操作符得到满足指定条件的子数组。条件放在 [] 中作为布尔判断 。这个与XPath 谓词相似.

源码列表 6

//使用[] 操作符 -与 XPath相似

import java.lang.System;
var mynumbers = [1,2,7,3,30,15,14,6,4];
var numbers = mynumbers[n|n < 10];
System.out.println("小于10的数字为: {numbers}");

结果: 小于10的数字为: 1 2 7 3 6 4
你可以使用indexof 操作符得到指定序数位置的数组中一个元素

源码列表 7

//返回指定序数位置的数组中的元素

import java.lang.System;

var mynumbers = [1,2,7,3,30,15,14,6,4];
var number_four = mynumbers[indexof . == 4];
System.out.println("数字4:{number_four}");

结果: 数字4: 30

当您想要向一个数组中插入一个元素时,你可以使用下列 insert 语句中的一个:

·                     as first: 在第一个位置插入

·                     as last:在最后一个位置(默认)插入

·                     before: 在前一个位置插入

·                     after:在下一个位置插入

你可以使用 delete 语句从一个数组中删除一个元素.

源码列表8

//插入和删除语句
import java.lang.System;
var mynumbers = [1,2,7];
System.out.println("Before inserting anything: {mynumbers}");
insert 10 into mynumbers;
System.out.println("After inserting at the end the /"10/" value:{mynumbers}");
insert [8,6,90] as first into mynumbers;
System.out.println("After inserting at the first positions the /"8,6,90/" values:{mynumbers}");
insert 122 as last into mynumbers;
System.out.println("After inserting at the end the /"122/" value:{mynumbers}");
insert 78 before mynumbers[3];
insert 11 after mynumbers[3];
System.out.println("After inserting the /"78/" and /"11/" values before/after the 3rd element:{mynumbers}");
delete mynumbers[. == 122];
System.out.println("After deleting:{mynumbers}");

结果:
Before inserting anything: 1 2 7
After inserting the 10 value at the end: 1 2 7 10
After inserting the 8, 6, and 90 values at the first positions: 8 6 90 1 2 7 10
After inserting the 122 value at the end: 8 6 90 1 2 7 10 122
After inserting the 78 and 11 values before/after the 3rd element: 8 6 90 78 11 1 2 7 10 122
After deleting: 8 6 90 78 11 1 2 7 10

JavaFX中的一个非常好的功能是list。这个功能使用 select 和 foreach 操作符实现。这有两个例子(一个使用 select 和使用 foreach) 得到指定间隔的奇数。

源码列表9

//JavaFX中的 select 和 foreach 操作符

import java.lang.System;
function odd(p:Number)
{ return select i from i in [1.0 ..p]
where (i%2 == 0.0);
}

var result = odd(10.0);
System.out.println("Odd numbers:{result}");

结果: Odd numbers: 2.0 4.0 6.0 8.0 10.0

源码列表10 ( 源码列表 9相同, 但是有 foreach)

//JavaFX中的select 和 foreach 操作符

import java.lang.System;
function odd(p:Number) {
       return foreach (i in [1.0 ..p]
     where (i%2 == 0.0)) i;
     }
var result = odd(10.0);
System.out.println("Odd numbers:{result}");

这个例子显示了 foreach 对于创建好的效果非常有用。

源码列表11

//JavaFX中的 select 和 foreach 操作符

import java.lang.*;
import javafx.ui.*;
import javafx.ui.canvas.*;
Frame {
centerOnScreen: true
visible: true
height: 500
width: 500
title: "Foreach demo..."
onClose: operation() {
System.exit(0);
}
content: ScrollPane {
background: white
view: Canvas {
content: bind
foreach (i in [1..8], j in [1..8])
Rect { x: i*30 y: j*30 width:30 height:30 fill: Color {red: (100+i) green: (100+j) blue: (100+(i*j))
}
stroke:white
strokeWidth:1 } }

}

}

Running listing 11
图四. 运行源码列表 11

使用双箭头括号引用为JavaFX关键字的变量名或者属性名,如下所示。

源码列表 12

//标志符引用

import java.lang.System;

for (<<for>> in [0..3]) {

System.out.println("for = {<<for>>}");

}

结果: for = 0 for = 1 for = 2 for = 3

当你需要开发Swing接口时,JavaFX 是一个伟大的工具,因为 JavaFX 考虑了非常多用来降低代码量和同javax.swing.*包并存友好。在上一节(使用NetBeans5.5中的JavaFX插件测试Hello World应用程序),你看到了创建一个窗体是如何容易。这有两个更好的例子:创建按钮和文本框。

源码列表 13

import javafx.ui.*;

import java.lang.System;

Frame{

content: Button { text: "Exit" action: operation() { System.exit(0); } }

visible: true

}

Running listing 13
图五. 运行源码 13

源码列表14

import javafx.ui.*;

Frame {

content: GroupPanel { var myRow = Row { alignment: BASELINE }

var label_col = Column { alignment: TRAILING }

var field_col = Column { alignment: LEADING }

rows: [myRow] columns: [label_col, field_col]

content: [SimpleLabel { row: myRow column: label_col text: "Type your text here:" }, TextField { row: myRow column: field_col columns: 50 }] }

visible: true

};

Running listing 14
图六. 运行源码 14

Java.net 也有使用JavaFx创建 Swing接口的教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值