JavaFx中的語句和表達(dá)式_第1頁
JavaFx中的語句和表達(dá)式_第2頁
JavaFx中的語句和表達(dá)式_第3頁
JavaFx中的語句和表達(dá)式_第4頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、JavaFx 中的語句和表達(dá)式JavaFx 是一個(gè)基于表達(dá)式的語言,所有的語句都是由表達(dá)式組成的。表達(dá)式的特征就是有零個(gè)或者多個(gè)輸入,產(chǎn)生零個(gè)或者一個(gè)輸出。JavaFx 的表達(dá)式包括條件表達(dá)式,循環(huán)表達(dá)式,代碼塊(block)。我們先來看一個(gè)簡單的腳本:expression01.fxpackage example;var rand = (Math.random() * 100).intValue();var s:String = null;if (rand mod 2 = 0) s = "rand is even" else s = "rand is odd&qu

2、ot;先簡單解釋一下,這段代碼先產(chǎn)生一個(gè)隨機(jī)整數(shù),然后判斷是否偶數(shù)。 這里的 mod操作,也可以寫作 Java 中比較熟悉的 %, rand % 2 =0,可能很多人會(huì)比較習(xí)慣這種寫法。編譯運(yùn)行看結(jié)果:#javafxc expression01.fx -d .#javafx example.expression01rand is odd#javafx example.expression01rand is odd#javafx example.expression01rand is even代碼塊表達(dá)式代碼塊 (block)是在 .之間的一系列語句( 可以是表達(dá)式或者聲明、定義) ,語句之間用

3、 ''分隔。既然我們說block是一個(gè)表達(dá)式,表達(dá)式是有值的。代碼塊的值就等于所執(zhí)行的最后一個(gè)語句的值。也就是說, 如果最后一個(gè)語句是一個(gè)表達(dá)式的話,這個(gè)表達(dá)式的值即block的值,如果不是表達(dá)式,則block的值是一個(gè)Void類型的值??匆粋€(gè)例子: expression02.fxpackage example;var nums = 5, 7, 3, 9;var total = var sum = 0;for (a in nums) sum += a ;sum;這段腳本遍歷數(shù)組求和,最后sum;表達(dá)式語句結(jié)束,把sum的值作為這個(gè)block 的值。運(yùn)行看結(jié)果:#javafxc

4、expression02.fx -d .#javafx example.expression02Total is 24范圍表達(dá)式范圍表達(dá)式用于表示一串連續(xù)數(shù)字。定義格式為,從起始值開始,到終止值結(jié)束,指定步長,范圍表達(dá)式中包含終止值: 起始值 . 終止值 起始值 . 終止值step步長步長可以省略,默認(rèn)為+1,或者,可以指定另外一個(gè)值作為步長??创a:expression04.fxpackage example;var nums = 0.3;var nums2 = 1.10 step 2;編譯運(yùn)行,看結(jié)果:#javafxc expression04.fx -d .#javafx example

5、.expression04true0,1,2,3true1,3,5,7,9若想創(chuàng)建一個(gè)遞減的數(shù)組,則終止值必須小于起始值,并且,步長為負(fù)值即可??创a:expression05.fxpackage example;var nums = 3.0 step -1;運(yùn)行看結(jié)果 :#javafxc expression05.fx -d .#javafx example.expression05true3,2,1,0條件表達(dá)式JavaFx 的條件表達(dá)式基本和Java 的寫法是一樣的, if( 邏輯判斷 ) 條件成立else 條件不成立 。所不同的是, . 部分在 JavaFx 里面,是一個(gè)代碼塊表達(dá)式,

6、 是一個(gè)值,并且,整個(gè)條件表達(dá)式也是一個(gè)值??匆粋€(gè)條件表達(dá)式的簡單例子: expression03.fx package example;var name = "Bei Jing"var value = if (name = "Bei Jing") name;else "Other"這段腳本里面,我們把條件表達(dá)式的值給利用起來了。把條件表達(dá)式放在等號(hào)的右邊,賦值給變量value。條件判斷成立,執(zhí)行成立代碼塊,首先輸出一個(gè)Hi ,向Bei Jing打個(gè)招呼,最后,name表達(dá)式結(jié)束,作為block的值,這個(gè)值就是條件語句的值,賦值給va

7、lue變量。#javafxc expression03.fx -d .#javafx example.expression03Hi, Bei JingValue: Bei Jing條件表達(dá)式也是允許嵌套的,如果您足夠冷靜的話,可以嘗試嵌套很多層看看,不過,我建議還是代碼可讀性優(yōu)先。由于 JavaFx 的條件表達(dá)式本身就是表達(dá)式,Java 中的三目運(yùn)算符?: 就不再需要了。循環(huán)表達(dá)式for循環(huán)for的語法在講數(shù)組的時(shí)候,已經(jīng)提及了。JavaFx 的 for跟 Java 的 for的用法不同,必須基于一個(gè)數(shù)組進(jìn)行遍歷。循環(huán)表達(dá)式實(shí)際上就是反復(fù)執(zhí)行一個(gè)代碼塊( 循環(huán)體部分 ) ,每次執(zhí)行結(jié)束代碼塊的

8、值作為改循環(huán)表達(dá)式的一個(gè)元素??创a:expression06.fxpackage example;/得到各個(gè)元素的平方值var val1 = for (i in 1.5) i*i;/ 1,4,9,16,25結(jié)果為:#javafxc expression06.fx -d .#javafx example.expression061 power 12 power 43 power 94 power 165 power 251,4,9,16,25while循環(huán)語句基本和 Java 中的一樣, 不過, 不能省略, JavaFx 中,循環(huán)體是一個(gè)代碼塊??创a:expression07.fxpacka

9、ge example;var i = 0;while (i < 10) if (i > 5) break;i += 1;跟 for表達(dá)式不同,我們無法獲得while表達(dá)式的返回值。運(yùn)行結(jié)果:#javafxc expression07.fx -d .#javafx example.expression07i = 0i = 1i = 2i = 3i = 4i = 5其他類型return表達(dá)式return用法和 Java 中一樣:function add(x, y) return x + y;throw語句throw 跟 Java 中類似,只有從Throwable 繼承的類才能throw

10、 和 catch 。function foo() throw new Exception("this is a java exception");function bar() throw "just a string"try.catch語句try.catch跟 Java 中類似,只是形式上有所改變,長得是JavaFx 的樣子。try throw "Hello" catch (s:String) catch (any) finally break, continue語句和 Java 中類似,用于終止,跳過循環(huán)語句??蠢樱?expres

11、sion08.fx package example;function foo() for (i in 0.10) if (i > 5) break;if (i mod 2 = 0) continue;function bar() var i = 0;while (i < 10) if (i > 5) break;if (i mod 2 = 0) i += 1;continue;i += 1;foo();bar();運(yùn)行結(jié)果:#javafxc expression08.fx -d .#javafx example.expression08135*135JavaFX 之 1 Ja

12、vaFx2008年 12月 30日小例子星期二22:5512 月4 日,SUN公司終于推出了基于JAVA語言的平臺(tái)JavaFx 1.0版本。這個(gè)平臺(tái)建立在其廣泛應(yīng)用的 Java 編程語言的基礎(chǔ)上,旨在建立大量可在電腦和手機(jī)上運(yùn)行的網(wǎng)絡(luò)程序。 Java 一直以來就是編程語言,但是隨著 JavaFX的發(fā)布, Sun 公司開始允許將編程內(nèi)容創(chuàng)新這一任務(wù)轉(zhuǎn)移到以設(shè)計(jì)藝術(shù)為重點(diǎn)而非編程科學(xué)為重點(diǎn)的設(shè)計(jì) 人員身上。最近看了一下 JavaFx 的 API 的,給大家看看 JAVAFX的小例子。其實(shí)看的出來,JAVAFX的界面效果實(shí)在是比 Swing 好太多了。首先需要去 SUN公司下載 JavaFX SDK

13、,安裝之后自動(dòng)配置了環(huán)境變量,不需要你自己動(dòng)手。不過再安裝 JavaFX 之前需要下載 JavaSE 6.0 Update11 也就是JavaSE的最新版本 .下面是 JavaFx 的例子和效果圖。第一個(gè):Stagetitle:"一個(gè) JAVAFX的例子 "scene:Scenefill:Color.ORANGEcontent:Textcontent:"歡迎來到 JAVAFX的世界 "x:25 y:25fill:Color.BLACK font:Fontsize:10Textcontent:"這是第二個(gè)標(biāo)簽 "x:50 y:50fil

14、l:Color.BLACK font:Fontsize:15第二個(gè):Stage title: "Application title"width: 250height: 80style:StageStyle.TRANSPARENTscene: Scene fill: Color.ORANGEcontent:SwingButtontext: "Click."action: function():Void JOptionPane.showMessageDialog(null, "歡迎 !")translateX: 90 translateY

15、: 10SwingButtontext:"Myself"action:function():VoidJOptionPane.showMessageDialog(null,"這是我自己加上去的按鈕哦!")translateX:150 translateY:10visible: true【 IT168 技術(shù)文檔 】在 JavaFX 1.0 發(fā)布之后,本人撰寫的文章JavaFX 和 Java之間的互操作性被各網(wǎng)站轉(zhuǎn)載。 文中總結(jié)了 3 種從 Java 調(diào)用 JavaFX的方法。這三種方法分別為 :1.用 ScriptEngineManager類。這是基于 JS

16、R-223 規(guī)范的 java 腳本API( scripting API) ??梢栽?java 程序中運(yùn)行一些腳本,如 JavaFX script, javascript 等。2. 通過 JavaFX reflection API 。這是 JavaFX提供的反射 API,幾乎可以調(diào)用所有的 JavaFX 類。3. 先用 JavaFX 類實(shí)現(xiàn)一個(gè) Java 的 interface ,然后 Java 程序可以通過這個(gè) interface 來調(diào)用 JavaFX 的功能。這中間的 interface 起了個(gè)橋梁的作用。第三種方法應(yīng)該是比較“正規(guī)”而且“優(yōu)美”的調(diào)用方式。但是也有一點(diǎn)不足:程序代碼的入口必

17、須從 JavaFX 啟動(dòng)。這是因?yàn)?JavaFX 程序比較容易生成 JavaFX 類的實(shí)例,從而可以供 Java 方使用??墒俏覀冇袝r(shí)會(huì)碰到一些特定的情況,需要從 Java 端啟動(dòng)代碼。例如,如果你已經(jīng)有了一個(gè)較完整的 Java 程序,你需要用調(diào)用 JavaFX的某些功能,這時(shí)候較好的方法是把 Java 作為程序的入口。為了解決這個(gè)問題,我把第 2 和第 3 種方法作了融合,大家可以看看下面的例子。純 Java 代碼調(diào)用 JavaFX 的例子下一步是創(chuàng)建 JavaFX 類 MyChart 來實(shí)現(xiàn)這個(gè) interface:在代碼中,這 3 句是創(chuàng)建 JavaFX 類 javatest.MyCha

18、rt實(shí)例,Context context = FXLocal.getContext(); FXClassType instance = context.findClass("javatest.MyChart"); ObjectValue obj = (ObjectValue)instance.newInstance();而一下這句則是把JavaFX 實(shí)例轉(zhuǎn)化為 Java 可用的對象:JavaInterface ji = (JavaInterface)obj.asObject();如果你用的是 NetBeans IDE,你可以在項(xiàng)目屬性中把javatest.JavaTest類

19、設(shè)為主類 (Main class)(即啟動(dòng)類 ) 。編譯之后會(huì)生成一個(gè)javatest.jar文件。程序運(yùn)行的結(jié)果如圖:在命令行中可以采用以下方式: javafx -jar javatest.jar實(shí)際上,可以用純 Java 的方式來啟動(dòng)程序, 只要把 JavaFX的運(yùn)行環(huán)境帶上即可,如: JavaFX程序例子、教程因?yàn)?JavaFX 需要的比較麻煩。我覺得還是用的封裝而已。jar 文件很多,因此這種 “最純” 的 java 方法使用起來 javafx 命令簡潔些 , 而且 javafx 就是上述 java 命令Chapter1:數(shù)據(jù)類型1.1 基本類型JavaFX 語言提供四種基本類型:St

20、ring (字符串)、 Boolean (布爾)、 Number (數(shù)值)和 Integer (整數(shù))。這些類型相當(dāng)于Java的如下類型:JavaFXJavaStringBooleanNumberIntergerbyte,short,int,long,BigIntegerExample :vars:String="Hello"s.toUpperCase();/"HELLO"s.substring(1) ; /"ello"同時(shí)還要說明一點(diǎn),JavaFX 的字符串可以用雙引號(hào),也可以用單引號(hào)。var s = 'Hello'

21、與var s="Hello"是等價(jià)的。-注意: JavaFX 中字符串的連接與java 不同, JavaFX 不支持 +連接字符串。連接方式如下:方法一:vars:String ="Hello"vars1="s World"方法二:JavaFX提供了 concat() 方法連接兩個(gè)字符串var s1= "Hello".concat(" World");-var n:Number=12.5 ;Value();/12(12.5).intValue(); /12var b:Boolean =

22、 true;b intstanceof Boolean; / true下面我們用個(gè)Demo來體驗(yàn)一下這些基本類型的使用吧!在 Netbeans 6.1中文件 >新建項(xiàng)目 >樣例 >JavaFX展開節(jié)點(diǎn)在 Best Practice中任選一個(gè)例子。 我這里是選的是transform中的 Rotate 。在源包的transform中打開 Rotate.fx文件??梢钥吹较旅孢@樣的代碼。package transform;var angle : Number = 0.0;var jitter : Number = 0.0;var random : Random = new Rand

23、om();var ticker : Timeline = Timeline repeatCount: Timeline.INDEFINITEkeyFrames :KeyFrame. time : 20msaction : function(): Void angle += jitter;var jitterTimeline : Timeline = Timeline repeatCount: Timeline.INDEFINITEkeyFrames :KeyFrame. time : 1saction : function(): Void jitter = random.nextDouble(

24、) * 12 - 6;Frame. content : Canvas background : Color.GRAYcontent : Rectangle transform. width : 114, height : 114fill : Color.WHITEvisible : truetitle : "Rotate"width : 200height : 232ticker.start();jitterTimeline.start();可以先運(yùn)行一下看看是什么樣的東西。好了,我們可以看到一個(gè)以Rotate 為標(biāo)題的窗體里有一個(gè)白色的正方形在轉(zhuǎn)動(dòng)。接下來我們就在這個(gè)程序

25、代碼中作一點(diǎn)添加和修改, 來體驗(yàn)一下我們上面講到的基本類型的用法。首先在 var jitter: Number = 0.0;后面加上var s : String = "Hello"這一句,然后裝下面的title :"Rotate"換成 title :s 。運(yùn)行一下,可以看到窗體的標(biāo)題變成了“ Hello,”接著把 s換成s.toUpperCase()可以看到標(biāo)題變成 “ HELLO”。同樣 s.substing(1)標(biāo)題變成 “ ello?!毕旅鎭碓囈幌?Number 類型。同樣在 var s : String = "Hello"下面

26、加上 var n : Number = 12.5;然后我會(huì)找到下面這段代碼:var jitterTimeline : Timeline = Timeline repeatCount: Timeline.INDEFINITEkeyFrames :KeyFrame. time : 1saction : function(): Void jitter = random.nextDouble() * 12 - 6;裝里的那個(gè)12 換成 Value() 或( 12.5).intValue()可以看到效果和前面的一樣。同樣你可以通過你自己申明的類型來替換里的變量來體會(huì)一下吧。-1.2數(shù)組在 Ja

27、vaFX 中最常用的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組,它在 JavaFX 中通過方括弧和逗號(hào)來聲明:如 :var week_days="Mon","Tue","Wen","Thu","Fri"數(shù)組代表了一組順序的對象 .JavaFX 中的數(shù)組本身不是對象 ,而且不能嵌套 . 創(chuàng)建嵌套數(shù)組的表達(dá)式如下 :var days = week_days,"Sat","Sun"會(huì)被自動(dòng)扁平化,例如 :days="Mon","Tue","

28、;Wen","Thu","Fri","Sat","Sun"/return true數(shù)組的大小可以通過JavaFX 的 sizeof 操作符確定 :var n = sizeof days;/n = 7對于數(shù)組成員形成數(shù)列(arithmetic series )的數(shù)組 ,JavaFX 提供了一種簡寫符號(hào):"." 。下面提供了定義階乘和奇數(shù)求和函數(shù)的示例,其中“result的”數(shù)值是1 至 100 中的奇數(shù)的和:function fac(n)return product(1.n);var r

29、esult = sum(1,3.100);數(shù)組中的所有元素必須是同一種類型。數(shù)組可以像在Java 中那樣通過索引訪問:var wendesday = days2;JavaFX 中的 操作符還可以用來表示選擇(類似XPath 的用法)。在這種情況下,中包含的表達(dá)式應(yīng)是一個(gè)布爾表達(dá)式。此表達(dá)式可以返回一個(gè)新的數(shù)組,此數(shù)組中只包含滿足中斷言( prddicate )的成員。在 操作符包含的斷言中通過操作符訪問上下文對象。例如:var nums = 1,2,3,4;var numsGreaterThanTwo = nums.>2;/3,4另一種方法,也可以將變量聲明為上下方對象。例如,這種方式與

30、上面的方式等價(jià):numsGreaterThanTwo = numsn|n>2;JavaFX 中的 indexof 操作符返回對象在數(shù)組中的順序位置。下面 list 的 car 和 cdr 可以用選擇表達(dá)式來表示:function car(list) return listindexof .=0;function cdr(list)return listindexof .>0;當(dāng)然, car 可以用更簡單、高效的方式表示:function car(list) return list0;Example:var list = 1.10;car(list);/ 1cdr(list);/ 2,3,4,5,6,7,8,9,10JavaFX 中的空數(shù)組 與 null 等價(jià), Example : null;/truesizeof null / 0-1.2-2數(shù)組的插入除了賦

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論