JavaFx中的语句和表达式.docx

上传人:b****6 文档编号:6451042 上传时间:2023-01-06 格式:DOCX 页数:21 大小:271.20KB
下载 相关 举报
JavaFx中的语句和表达式.docx_第1页
第1页 / 共21页
JavaFx中的语句和表达式.docx_第2页
第2页 / 共21页
JavaFx中的语句和表达式.docx_第3页
第3页 / 共21页
JavaFx中的语句和表达式.docx_第4页
第4页 / 共21页
JavaFx中的语句和表达式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

JavaFx中的语句和表达式.docx

《JavaFx中的语句和表达式.docx》由会员分享,可在线阅读,更多相关《JavaFx中的语句和表达式.docx(21页珍藏版)》请在冰豆网上搜索。

JavaFx中的语句和表达式.docx

JavaFx中的语句和表达式

JavaFx中的语句和表达式

JavaFx是一个基于表达式的语言,所有的语句都是由表达式组成的。

表达式的特征就是有零个或者多个输入,产生零个或者一个输出。

JavaFx的表达式包括条件表达式,循环表达式,代码块(block)。

我们先来看一个简单的脚本:

expression01.fx

packageexample;

importjava.lang.Math;

importjava.lang.System;

varrand=(Math.random()*100).intValue();

vars:

String=null;

if(randmod2==0){

    s="randiseven"

}else{

    s="randisodd"

};

System.out.println(s);

先简单解释一下,这段代码先产生一个随机整数,然后判断是否偶数。

这里的mod操作,也可以写作Java中比较熟悉的%,rand%2==0,可能很多人会比较习惯这种写法。

编译运行看结果:

#javafxcexpression01.fx-d.

#javafxexample.expression01

randisodd

#javafxexample.expression01

randisodd

#javafxexample.expression01

randiseven

代码块表达式

代码块(block)是在{...}之间的一系列语句(可以是表达式或者声明、定义),语句之间用';'分隔。

既然我们说block是一个表达式,表达式是有值的。

代码块的值就等于所执行的最后一个语句的值。

也就是说,如果最后一个语句是一个表达式的话,这个表达式的值即block的值,如果不是表达式,则block的值是一个Void类型的值。

看一个例子:

expression02.fx

packageexample;

importjava.lang.System;

varnums=[5,7,3,9];

vartotal={

    varsum=0;

    for(ainnums){sum+=a};

    sum;

}

System.out.println("Totalis{total}");

这段脚本遍历数组求和,最后sum;表达式语句结束,把sum的值作为这个block的值。

运行看结果:

#javafxcexpression02.fx-d.

#javafxexample.expression02

Totalis24

范围表达式

范围表达式用于表示一串连续数字。

定义格式为,从起始值开始,到终止值结束,指定步长,范围表达式中包含终止值:

[起始值..终止值]

[起始值..终止值step步长]

步长可以省略,默认为+1,或者,可以指定另外一个值作为步长。

看代码:

expression04.fx

packageexample;

importjava.lang.System;

varnums=[0..3];

System.out.println(nums==[0,1,2,3]);//printstrue

System.out.println(nums);

varnums2=[1..10step2];

System.out.println(nums2==[1,3,5,7,9]);//printstrue

System.out.println(nums2);

编译运行,看结果:

#javafxcexpression04.fx-d.

#javafxexample.expression04

true

[0,1,2,3]

true

[1,3,5,7,9]

若想创建一个递减的数组,则终止值必须小于起始值,并且,步长为负值即可。

看代码:

expression05.fx

packageexample;

importjava.lang.System;

varnums=[3..0step-1];

System.out.println(nums==[3,2,1,0]);//printstrue

System.out.println(nums);

运行看结果:

#javafxcexpression05.fx-d.

#javafxexample.expression05

true

[3,2,1,0]

条件表达式

JavaFx的条件表达式基本和Java的写法是一样的,if(逻辑判断){条件成立}else{条件不成立}。

所不同的是,{...}部分在JavaFx里面,是一个代码块表达式,是一个值,并且,整个条件表达式也是一个值。

看一个条件表达式的简单例子:

expression03.fx

packageexample;

importjava.lang.System;

varname="BeiJing";

varvalue=if(name=="BeiJing"){

   System.out.println("Hi,{name}");

   name;

}

else{

   System.out.println("Hello");

   "Other";

}

System.out.println("Value:

{value}");

这段脚本里面,我们把条件表达式的值给利用起来了。

把条件表达式放在等号的右边,赋值给变量value。

条件判断成立,执行成立代码块,首先输出一个Hi,向BeiJing打个招呼,最后,name表达式结束,作为block的值,这个值就是条件语句的值,赋值给value变量。

#javafxcexpression03.fx-d.

#javafxexample.expression03

Hi,BeiJing

Value:

BeiJing

条件表达式也是允许嵌套的,如果您足够冷静的话,可以尝试嵌套很多层看看,不过,我建议还是代码可读性优先。

由于JavaFx的条件表达式本身就是表达式,Java中的三目运算符?

:

就不再需要了。

循环表达式

for循环

for的语法在讲数组的时候,已经提及了。

JavaFx的for跟Java的for的用法不同,必须基于一个数组进行遍历。

循环表达式实际上就是反复执行一个代码块(循环体部分),每次执行结束代码块的值作为改循环表达式的一个元素。

看代码:

expression06.fx

packageexample;

importjava.lang.System;

//得到各个元素的平方值

varval1=for(iin[1..5]){

   System.out.println("{i}power{i*i}");

   i*i;

}

System.out.println(val1);  //[1,4,9,16,25]

结果为:

#javafxcexpression06.fx-d.

#javafxexample.expression06

1power1

2power4

3power9

4power16

5power25

[1,4,9,16,25]

while循环语句

基本和Java中的一样,不过,{}不能省略,JavaFx中,循环体是一个代码块。

看代码:

expression07.fx

packageexample;

importjava.lang.System;

vari=0;

while(i<10){

   if(i>5){

        break;

   }

   System.out.println("i={i}");

   i+=1;

}

跟for表达式不同,我们无法获得while表达式的返回值。

运行结果:

#javafxcexpression07.fx-d.

#javafxexample.expression07

i=0

i=1

i=2

i=3

i=4

i=5

其他类型

return表达式

return用法和Java中一样:

functionadd(x,y){

    returnx+y;

}

throw语句

throw跟Java中类似,只有从Throwable继承的类才能throw和catch。

importjava.lang.Exception;

functionfoo(){

    thrownewException("thisisajavaexception");

}

functionbar(){

    throw"justastring";

}

try...catch语句

try...catch跟Java中类似,只是形式上有所改变,长得是JavaFx的样子。

try{

    throw"Hello";

}catch(s:

String){

    System.out.println("caughtaString:

{s}");

}catch(any){

    System.out.println("caughtsomethingnotaString:

{any}");

}finally{

    System.out.println("finally...");

}

break,continue语句

和Java中类似,用于终止,跳过循环语句。

看例子:

expression08.fx

packageexample;

importjava.lang.System;

functionfoo(){

   for(iin[0..10]){

        if(i>5){

             break;

        }

        if(imod2==0){

             continue;

        }

        System.out.println(i);

   }

}

functionbar(){

   vari=0;

   while(i<10){

        if(i>5){

             break;

        }

        if(imod2==0){

             i+=1;

             continue;

        }

        System.out.println(i);

        i+=1;

   }

}

foo();

System.out.println("*****************************");

bar();

运行结果:

#javafxcexpression08.fx-d.

#javafxexample.expression08

1

3

5

*****************************

1

3

5

JavaFX之1JavaFx小例子

2008年12月30日星期二22:

55

12月4日,SUN公司终于推出了基于JAVA语言的平台JavaFx1.0版本。

这个平台建立在其广泛应用的Java编程语言的基础上,旨在建立大量可在电脑和手机上运行的网络程序。

Java一直以来就是编程语言,但是随着JavaFX的发布,Sun公司开始允许将编程内容创新这一任务转移到以设计艺术为重点而非编程科学为重点的设计人员身上。

最近看了一下JavaFx的API的,给大家看看JAVAFX的小例子。

其实看的出来,JAVAFX的界面效果实在是比Swing好太多了。

首先需要去SUN公司下载JavaFXSDK,安装之后自动配置了环境变量,不需要你自己动手。

不过再安装JavaFX之前需要下载JavaSE6.0Update11也就是JavaSE的最新版本.

下面是JavaFx的例子和效果图。

第一个:

importjavafx.stage.Stage;

importjavafx.scene.paint.Color;

importjavafx.scene.text.Font;

importjavafx.scene.text.Text;

importjavafx.scene.Scene;

Stage{

title:

"一个JAVAFX的例子"

scene:

Scene{

  

fill:

Color.ORANGE

  

content:

  

[

       

Text{

content:

"欢迎来到JAVAFX的世界"

      

x:

25y:

25

fill:

Color.BLACKfont:

Font{size:

10}

   }

       

Text{

content:

"这是第二个标签"

       

x:

50y:

50

fill:

Color.BLACKfont:

Font{size:

15}

   }

  

]

}

}

第二个:

importjavafx.stage.Stage;

importjavafx.stage.StageStyle;

importjavafx.scene.Scene;

importjavafx.scene.paint.Color;

importjavafx.scene.text.Text;

importjavafx.scene.text.Font;

importjavafx.ext.swing.SwingButton;

importjavax.swing.JOptionPane;

Stage{

   

title:

"Applicationtitle"

   

width:

250

  

height:

80

   s

tyle:

StageStyle.TRANSPARENT

   

scene:

Scene{

       

fill:

Color.ORANGE

       

content:

       

[

        

SwingButton

{

          

text:

"Click..."

          

action:

function():

Void{

              

JOptionPane.showMessageDialog(null,"欢迎~!

")

       

   }

           

translateX:

90translateY:

10

     

}

      

SwingButton{

        

text:

"Myself"

         

action:

function():

Void{

         

JOptionPane.showMessageDialog(null,"这是我自己加上去的按钮哦!

")

          

}

        

translateX:

150translateY:

10

     

}

    

  ]

  

}

   

visible:

true

}

【IT168技术文档】在JavaFX1.0发布之后,本人撰写的文章JavaFX和Java之间的互操作性被各网站转载。

文中总结了3种从Java调用JavaFX的方法。

这三种方法分别为:

  1.用ScriptEngineManager类。

这是基于JSR-223规范的java脚本API(scriptingAPI)。

可以在java程序中运行一些脚本,如JavaFXscript,javascript等。

  2.通过JavaFXreflectionAPI。

这是JavaFX提供的反射API,几乎可以调用所有的JavaFX类。

  3.先用JavaFX类实现一个Java的interface,然后Java程序可以通过这个interface来调用JavaFX的功能。

这中间的interface起了个桥梁的作用。

  第三种方法应该是比较“正规”而且“优美”的调用方式。

但是也有一点不足:

程序代码的入口必须从JavaFX启动。

这是因为JavaFX程序比较容易生成JavaFX类的实例,从而可以供Java方使用。

可是我们有时会碰到一些特定的情况,需要从Java端启动代码。

例如,如果你已经有了一个较完整的Java程序,你需要用调用JavaFX的某些功能,这时候较好的方法是把Java作为程序的入口。

为了解决这个问题,我把第2和第3种方法作了融合,大家可以看看下面的例子。

纯Java代码调用JavaFX的例子  

  下一步是创建JavaFX类MyChart来实现这个interface:

  

 

  

  在代码中,这3句是创建JavaFX类javatest.MyChart实例,

  Contextcontext=FXLocal.getContext();FXClassTypeinstance=context.findClass("javatest.MyChart");ObjectValueobj=(ObjectValue)instance.newInstance();

  而一下这句则是把JavaFX实例转化为Java可用的对象:

  JavaInterfaceji=(JavaInterface)obj.asObject();

  如果你用的是NetBeansIDE,你可以在项目属性中把javatest.JavaTest类设为主类(Mainclass)(即启动类)。

编译之后会生成一个javatest.jar文件。

程序运行的结果如图:

  

  在命令行中可以采用以下方式:

javafx-jarjavatest.jar

  实际上,可以用纯Java的方式来启动程序,只要把JavaFX的运行环境带上即可,如:

JavaFX程序例子、教程

  java-Djava.library.path=""-classpath""-jarjavatest.jar

  因为JavaFX需要的jar文件很多,因此这种“最纯”的java方法使用起来比较麻烦。

我觉得还是用javafx命令简洁些,而且javafx就是上述java命令的封装而已。

Chapter  1:

数据类型

   1.1基本类型

   JavaFX语言提供四种基本类型:

String(字符串)、Boolean(布尔)、Number(数值)和Integer(整数)。

这些类型相当于Java  的如下类型:

    JavaFX            Java

      String            java.lang.String

      Boolean          java.lang.Boolean

      Number          java.lang.Number

      Interger          byte,short,int,long,BigInteger

Example:

  var  s:

String="Hello"  ;

           

           s.toUpperCase();  //  "HELLO"

           

           s.substring

(1);//  "ello"

同时还要说明一点,JavaFX的字符串可以用双引号,也可以用单引号。

     vars='Hello';

  与  vars=  "Hello";  是等价的。

-------------------------------------------------------------------------------------------------------------------------

注意:

JavaFX中字符串的连接与java不同,JavaFX不支持+连接字符串。

连接方式如下:

  方法一:

         var  s:

String="Hello";

             var  s1="{s}World";

    方法二:

  JavaFX提供了concat()方法连接两个字符串

    vars1="Hello".concat("World");

-----------------------------------------------------------------------------------------------------------------------     

        varn:

Number=12.5;

           n.intValue();   //  12

        (12.5).intValue();//   12

       

       varb:

Boolean=true;

        bintstanceofBoolean;//true

下面我们用个Demo来体验一下这些基本类型的使用吧!

在Netbeans6.1中文件->新建项目->样例->JavaFX  展开节点在BestPractice中任选一个例子。

我这里是选的是transform中的Rotate。

在源包的transform中打开Rotate.fx文件。

可以看到下面这样的代码。

  packagetransform;

importjavafx.gui.*;

importjavafx.animation.*;

importjava.lang.Math;

importjava.util.Random;

varangle:

Number=0.0;

varjitter:

Number=0.0;

varrandom:

Random=newRandom();

varticker:

Timeline=Timeline{

repeatCount:

Timeline.INDEFINITE

keyFrames:

 

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1