JavaFX教程-操作
在JavaFX中使用operation關鍵字宣告過程(procedure)。例如:
import java.lang.StringIndexOutOfBoundsException;
operation substring(s:String, n:Number): String {
try {
return s.substring(n);
} catch (e:StringIndexOutOfBoundsException) {
throw "sorry, index out of bounds";
}
}
在上例中定義了一個稱為“substring”的新過程,它接受兩個引數:第一為字串型別的引數“s”,第二為Number型別的引數“n”,而返回值為字串型別。
除了從前提到的賦值、delete、insert語句之外,下面的語句也可以在過程體中使用:
表示式語句
一個基本的表示式可以被用作一條語句,例如下面示例中的"Hello World!":
System.out.println("Hello World!");
If語句
JavaFX的if語句用法類似Java,除了大括號必須環繞隨後的子句(除非else子句是另一個if語句)之外。
例如:
if (condition1) {
System.out.println("Condition 1");
} else if (condition2) {
System.out.println("Condition2");
} else {
System.out.println("not Condition 1 or Condition 2");
}
While語句
JavaFX的while語句用法與Java類似,除了大括號必須環繞語句體之外。
例如:
var i = 0;
while (i < 10) {
if (i > 5) {
break;
}
System.out.println("i = {i}");
i += 1;
}
Try語句
JavaFX的try語句用法類似Java,但它具有JavaFX變數宣告語法。注意:在JavaFX中,任意物件都能夠被丟擲和捕捉,而並非僅僅是java.lang.Throwable的繼承類。
例如:
try {
throw "Hello";
} catch (s:String) {
System.out.println("caught a String: {s}");
} catch (any) {
System.out.println("caught something not a String: {any}");
} finally {
System.out.println("finally...");
}
For語句
JavaFX的for語句頭與foreach列表推導操作符(list comprehension operator)使用相同的語法。但是,在下面示例中for語句體處理的是由列表推導生成的成員。
例如:
for (i in [0..10]) {
System.out.println("i = {i}");
}
// print only the even numbers using a filter
for (i in [0..10] where i % 2 == 0) {
System.out.println("i = {i}");
}
// print only the odd numbers using a range expression
for (i in [1,3..10]) {
System.out.println("i = {i}");
}
// print the cartesian product
for (i in [0..10], j in [0..10]) {
System.out.println(i);
System.out.println(j);
}
Return語句
JavaFX的return語句與Java相同:
例如:
operation add(x, y) {
return x + y;
}
Throw語句
JavaFX的throw語句類似Java。但是在JavaFX中能夠丟擲任何物件,而不僅僅是java.lang.Throwable的繼承類。
例如:
import java.lang.Exception;
operation foo() {
throw new Exception("this is a java exception");
}
operation bar() {
throw "just a string";
}
Break和Continue語句
JavaFX的break和 continue語句用法Java不同的之處:前者不支援標籤。像在Java中一樣,break和 continue必須出現在while或者for語句體中。
例如:
operation foo() {
for (i in [0..10]) {
if (i > 5) {
break;
}
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
}
operation bar() {
var i = 0;
while (i < 10) {
if (i > 5) {
break;
}
if (i % 2 == 0) {
continue;
}
System.out.println(i);
i += 1;
}
}
Do語句
JavaFX的do語句允許使用者在後臺執行緒中執行一塊JavaFX程式碼,以便AWT事件排程執行緒繼續處理事件,從而防止UI平臺出現掛起現象。目前,在執行後臺執行緒時採用java.awt.EventQueue實現了對事件的出/入隊操作。通常情況下,所有的JavaFX程式碼都在AWT事件排程執行緒中執行,只有包含在 do語句體中的語句被允許在另一個執行緒中執行。這些程式碼必須只訪問Java物件,如果需要的話,那些Java物件還必須處理其自身的執行緒同步。
例如:
import java.net.URL;
import java.lang.StringBuffer;
import java.lang.System;
import java.io.InputStreamReader;
import java.io.BufferedReader;
// in the AWT EDT
var result = new StringBuffer();
do {
// now in a background thread
var url = new URL("http://www.foo.com/abc.xml");
var is = url.openStream();
var reader = new BufferedReader(new InputStreamReader(is));
var line;
while (true) {
line = reader.readLine();
if (line == null) {
break;
}
result.append(line);
result.append("\n");
}
}
// now back in the EDT
System.out.println("result = {result}");
在上面的示例中,在事件排程執行緒(EDT)中正在執行的那些綠色程式碼在do語句(紅色程式碼)執行期間將被阻塞。但如果在等待後臺執行緒完成的期間,一個新的事件排程迴圈被建立在呼叫堆疊上,那麼在執行do語句的同時這些GUI事件將繼續被處理。不幸的是,由於它能夠引發建立在堆疊上的多重事件排程迴圈,乃至在糟糕的情況下引起堆疊溢位異常,而目前並沒有一種對此稱得上優秀的解決方案。
do later
do語句的第二種形式(do later):它允許在事件排程執行緒中的語句體內進行非同步執行,而不是在後臺執行緒中執行(此功能由java.awt.EventQueue.invokeLater提供)。顧名思義,do later語句體在事件排程執行緒執行完成後才被執行。下面是一個例如:
import java.lang.System;
var saying1 = "Hello World!";
var saying2 = "Goodbye Cruel World!";
do later {
System.out.println(saying1);
}
System.out.println(saying2);
執行上面的程式碼將產生如下輸出:
Goodbye Cruel World!
Hello World!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-209695/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaFx基礎操作【個人筆記】Java筆記
- JAVAFXJava
- javafx 和swing_整合JavaFX和SwingJava
- TODO: JavaFX appJavaAPP
- JavaFx 錯誤Java
- JavaFX: JDK11開始又要匯入JavaFx包JavaJDK
- JavaFx WebView使用研究JavaWebView
- 整合JavaFX和SwingJava
- Ice works操作教程
- Gluon 編譯 JavaFx -> exe編譯Java
- javafx開發計算器Java
- Gluon 編譯 JavaFx -> android apk編譯JavaAndroidAPK
- JavaFX基礎:1: 簡介Java
- JavaFx ObservableList的使用詳解Java
- JavaFX——fxml檔案載入錯誤:[javafx.fxml.LoadException]解決方案之一JavaXMLException
- Navicat操作MySQL簡易教程MySql
- Docker 教程十三 JAVA 操作elasticsearchDockerJavaElasticsearch
- JavaFx 實現按鈕防抖Java
- JavaFX桌面應用-版本升級Java
- JavaFX: IntelliJ 開發 Window 應用JavaIntelliJ
- JavaFX: 匯入ikonli-master 2.0JavaAST
- Beginning JavaFX .pdf 免費下載Java
- 類操作是什麼意思?jQuery的類操作教程jQuery
- Java開發桌面程式學習(九)——JavaFxTemplate JavaFx模版 更簡單進行JavaFx程式開發Java
- python交教程4:檔案操作Python
- Python:檔案操作詳細教程Python
- Pandas高階教程之:window操作
- Git 系列教程(7)- 撤銷操作Git
- Python操作Excel的Xlwings教程(六)PythonExcel
- Python操作Excel的Xlwings教程(七)PythonExcel
- 剪貼簿操作 Clipboard API 教程API
- 類操作是什麼意思?jQuery的類操作教程分享jQuery
- JavaFx 關鍵字高亮文字實現Java
- 利用Github Action實現Tornadofx/JavaFx打包GithubJava
- JavaFx 監聽剪下板實現(Kotlin)JavaKotlin
- javafx和swing巢狀使用的方法Java巢狀
- JavaFX桌面應用-構建程式框架Java框架
- JavaFx 軟體重啟功能實現Java
- 在JavaFX程式中嵌入Swing內容Java