導航:首頁 > 方法技巧 > javafx如何調用靜態方法

javafx如何調用靜態方法

發布時間:2023-01-11 06:54:18

❶ javafx webview js交互問題

1、如果html文件在jar包內,就是在classpath就這樣載入
webView.getEngine().load(WebViewStyle.class.getResource("/com/html/ScriptToJava.html").toExternalForm());
2、如果html文件在項目之外

File file = new File("Resources/Html/Chat/show/show.html");

String absolutePath = file.getAbsolutePath();

absolutePath = absolutePath.replace("\", "/");

if (absolutePath.startsWith("/")) {

webView.getEngine().load("file:" + absolutePath);

}else {

webView.getEngine().load("file:/" + absolutePath);

}

3、js調用Java對象
(1)、Java class需要是public

❷ JavaFX HTTP網路和XML分析

JavaFX的重點是在客戶端 目的是提高Java GUI的外觀和感覺這樣使用戶體驗更有吸引力的用戶界面 當然 許多用戶的應用程序需要用遠程伺服器來交互信息 如今 HTTP協議和XML作為交互信息 的最佳選擇而被普遍接受 所以我們想要去展示的是在JavaFX中處理HTTP交流細節是多麼簡單的事情 並且展示我們如何從一個XML數據結構中分析和提取信息的

在本文中我們假設你已經熟悉了JavaFX語言的基本概念

JavaFX基礎語言概念

雖然是一個匯編語言 JavaFX混合了一些從Java繼承下來的腳本語言的特徵 腳本語言用於快速簡潔的應用程序開發 而JavaFX基於Java所繼承的特徵使它成為一個更全面的語言

JavaFX提出了一個新的編碼模式 作為一個聲明語言 它迫使我們去描述我們是多麼的想要應用程序在沒有描述特定的控制流下工作的 盡管我們 用必要的語言來做這樣的事情 當我們需要開發GUI的時候這個模式是真的很強大 基本的想法就是在JavaFX GUI開發模式的背後是你要 describe 你的用戶界面是什麼樣子的 在代碼和 visual structure 之間有嚴格的關系 此外 在代碼中 用於聲明對象的命令反應了用於展現他們的命令 總體的結果就是它是一個簡潔的方法用幾行的代碼 就能創建一個GUI 這使應用程序易於理解和維護

另外一個JavaFX的有趣的特徵就是它是一個靜態類型語言 這就意味著每個變數的數據類型 函數等等被稱為pile time 針對這一特徵的JavaFX 教程可以鏈接Resources section

JavaFX HTTP & XML Package Overview

為了用HTTP協議和XML開發一個應用程序 JavaFX提供了一些包 如下

· javafx io for handling HTTP munication

· javafx data pull and javafx data xml for XML parsing

在Figure 中的圖解顯示了包括這些包的分類

HTTP &JavaFX

處理HTTP協議時 我們在javafx io 包中可以使用HttpRequest 類別 這個類別可以使非同步HTTP請求到達支持HTTP協議的一台遠程伺服器中 目前支持HTTP方法有

· GET

· POST

· PUT

· DELETE

這個類別在數據交換中是保持中立的 所以我們可以調用一台遠程伺服器並且發送我們想要發送的任何信息類型 只要我們可以提供一個OutputStream其中包括必須用POST 或是PUT HTTP方法發送的數據

與每一個HTTP支持方法有關的HttpRequest操作有特定的循環周期 就HTTP GET 方法來說 我們關注在的是循環周期 對於其他的方法(POST PUT DELETE) 循環周期是相同的 如果是HTTP GET 請求 循環周期如Figure 所示

Figure : HTTP GET method request lifecycle

正如以上我們所看到的 每一塊循環周期的描述都被HttpRequest class的內部變數的特定值所定義

關於每個變數的轉換 有一個相應的方法叫做ring the transition itself 這樣我們能夠控制和處理不同的在HTTP 循環周期的狀態 這些方法都有相應變數的相同的名字 前綴用on 例如 我們想在請求連接到伺服器時來追蹤 就使用onConnecting函數

是時候為我們的JavaFX客戶端進行編碼了 首先我們必須聲明一個包括URL的變數:

def url : String = ;

然後創建HTTP請求並且規定callback函數 當HTTP請求開始連接的時候可以呼叫

HttpRequest { location: url;

onConnecting: function() {

java lang System out println( Connecting );

}

} enqueue();

注意生成這個請求的方法enqueue() 現在我們想要讀取反應部分 我們可以使用onInput 功能提供的InputStream 我們需要添加這條代碼到客戶端

onInput: function(is: InputStream) { try {

var responseSize : Integer = is available();

java lang System out println( Response size {responseSize} );

}

finally {

is close();

}

最後一步是處理在HTTP請求期間發生的任何的異常情況 HTTPRequest有一個功能叫做無論何時所發生的異常(whenever an exception occurs) 所以我們可以為客戶端添加異常處理的代碼

onException: function(ex : Exception) { System out println( Error: {ex getMessage()} );

如果用NetBeans運行客戶端 你可以看到類似Figure 的輸出

Figure : Client log

在javafx io 包 中 有其他兩個類別叫HttpHeaders 和 HttpStatus 第一個類別定義一組常量對應相應的HTTP header 值名字 第二個類別定義一組常量對應可能的HTTP 反應代碼

XML API

正如我們所說的 今天很多客戶端用一個XML模板來發送數據到HTTP 而且JavaFX提供了簡單解析XML文件的能力 現在我們關注其他兩個包 在Figure 中所示

· javafx data xml

· javafx data pull

javafx data pull包含了分析一個XML文件的類別 同時javafx data xml 包 定義了一些常量並且處理合格的名稱 處理器是event based(類似SAX parser)並且支持兩個不同的數據格式

· XML

· JSON

本文我們關注在XML數據格式

PullParser class是JavaFX的文件分析器的核心 可以接受用於控制分析器的許多屬性 首先 我們需要聲明一個我們想要分析的文件類型 使用類別屬性documentType 該字元串有兩個值

· PullParser XML 用於分析XML

· PullParser JSON 用於分析JSON

在聲明文件類型之後 我們需要提供文件輸入去分析 分析器接受一個輸入流 以後我們會看到 這是非常方便的當我們需要去分析一個來自HTTP 請求的XML文件 為了聲明輸入流我們需要設置input變數的值

所以來創建一個PullParser的例子 如下

parser = PullParser { documentType: PullParser XML;

input: xmlFileInputStream;

當分析器分析文件的時候 它會產生一系列的條目 我們需要執行一個callback函數來應對這些條目的發生 這個callback 函數叫做onEvent 而其在它本身中 稍後我們會執行我們的邏輯來從文件中提取信息 函數簽名是onEvent(event : Event) Event類別屬於javafx data pull包 這個類別包括所有關於pull parsing條目 而且可以用它來提取我們需要的信息 作為在PullParser 定義中的值之一 Type 聲明了條目的類型 我們感興趣於一下類型的條目

· START_DOCUMENT: 這個條目在文件分析的開始時產生的

· START_ELEMENT: 這個條目是在分析器找到新的開始元素時產生的 我們可以用這個條目來讀取元素屬性

· END_ELEMENT: 這個條目是在分析器找到最後的元素時產生的 我們可以用它來讀取元素中的文本

· END_DOCUMENT: 這個條目是在分析器到達最後的文件時產生的

還有其他的條目用於JSON 文件;如果你感興趣 可以看一看PullParser文件 無論如何 這里有針對START_ELEMENT 和END_ELEMENT 條目反應的一個框架實施

onEvent: function(event : Event) { /* We start *** yzing the different event types */

if (event type == PullParser START_ELEMENT) {

/* Here we implement our logic to handle the start element event

for example to extract the attribute values and so on */

}

else if (event type == PullParser END_ELEMENT) {

/* Here we implement our logic to handle the end element */

}

在分析過程中 一些錯誤也會產生 我們可以管理他們只要檢查了被分析器所產生的條目類型 整合 HTTP & XML APIs

現在我們已經描述了這兩個API 該看一下最有趣的部分了 我們怎樣去整合所有的東西這樣我們才能編譯一個完整的XML over HTTP的客戶端 這是非常有用的如果我們想要一個客戶端來用遠程伺服器交互信息

讓我們假設JavaFX客戶端應用程序調用一個可以恢復XML文件的serlet結構如下

﹤?xml version= encoding= UTF ?﹥﹤data﹥﹤person id= ﹥﹤name﹥Mikey﹤/name﹥﹤surname﹥Mouse﹤/surname﹥﹤/person﹥﹤/data﹥

這個一個簡單的XML文件 但是足夠達到示例的目的了 我們的目標是為我們的客戶端連接到test serlet並且檢索XML內容 然後分析它並且顯示提取的信息 為了做到這一點 我們需要改變HttpRequest函數onInput為了當我們開始 接收XML文件時也可以去分析它 如何操作的代碼如下所示

onInput: function(is: InputStream) { try {

PullParser {

input: is;

onEvent: function (event : Event) {

// We handle the event

}

} parse();

}

finally {

is close();

}

注意我們怎樣添加了PullParser到onInput函數 而且我們設置了分析器輸入流到從HttpRequest接收的輸入流 現在我們只需要處理以上所描述的條目

if (event type == PullParser START_ELEMENT and event level == ) {

java lang System out println( Start a new element {event qname name} );

var qAttr : QName = QName {name : id };

var attVal : String = event getAttributeValue(qAttr);

java lang System out println( Attribute ID value {attVal} );

}

else if (event type == PullParser END_ELEMENT) {

var nodeName : String = event qname name;

java lang System out println( End element {nodeName} );

// Now we extract the text only if the node is name or surname

if (nodeName == name or nodeName == surname ) {

var textVal : String = event text;

java lang System out println( Text {textVal} );

}

}

一步步分析代碼是非常有用的 在有PullParser START_ELEMENT條目的情況下 我們使用event level變數 這個 告訴我們每個條目是在哪一個行發生的(從 開始 XML文件的根源) 我們已經知道id屬性是在第一行 所以我們只在這一行限制提取 然後創建一個 QName目標設置 名稱變化是根據屬性名稱 然後我們應用該值

在PullParser END_ELEMENT情況下 我們想要提取節點內容 為了做到這一點 我們使用包括節點值的text變數

如果一切運行正常 我們將會在項目控制台(console)中看到所分析的條目 如Figure 所示

Figure HTTP request with XML parsing

結束語

lishixin/Article/program/Java/JSP/201311/19264

❸ JavaFX綁定探究

數據綁定連接一些對象並且使它們同步 盡管Swing的開發者們取決於額外的類庫 但是綁定是完全融入了JavaFX Script編程語言 仔細看一看它運行的庫顯示了一個完全綁定構架 其基本概念與JGoodies Binding 和 Beans Binding很相似(在我以前的文章 Binding Beans 中有做過比較) JSR (Beans Binding)可能不會成為Java 的一部分 所以一直尋找可代替品的開發者們會問自己 JavaFX綁定構架是否可以通過簡單的Java程序而進行使用

JavaFX建立在普通的Java SE運行上 為了在本文中展示這個示例 你需要為你的操作系統(在此只支持官方的Windows 和Mac OS X)下載合適的JavaFX SDK 具體請參考Resources 安裝installation過程只需要幾個步驟 在Windows的機器上 默認安裝地址是C:Program FilesJavaFXjavafx sdk Mac OS X users should look at /Library/Frameworks/JavaFX framework/Versions/

圖 JavaFX SDK基礎目錄

圖 顯示了JavaFX SDK的基礎目錄 這個bin目錄包括可執行編譯並運行JavaFX Script程序 我們不使用它們 JavaFX(Script)documentation在docs中 文件src zip包括部分JavaFX運行的來源 如果你打開它 你會注意到文件是以stg 和 st結尾的 最後lib和它的子目錄包含庫 jars 本文的示例取決於它們中的一些

Locations

lib/shared/javafxrt jar包含 sun javafx runtime location包 它的類和介面來自基本的JavaFX Binding的構建塊 例如 Location介面代表一個值 它可能是可變的或是不能改變的 有效或無效的 空的或是非空 這樣的狀態可以通過相應的getters來查詢 例如 isMutable() 如果Location的值是無效的 當update()方法被調用時 或該值被檢索時 它會被更新

一個Location的類型是通過子介面來決定的;例如 IntLocation 如果你要在src zip中查詢IntLocation java 你不會看到它 這是因為它的來源是來自兩個文件XxxLocation st 和XxxTemplate stg 每個子介面為類型XYZ添加getAsXYZ和and setAsXYZ() 還有DoubleLocation FloatLocation ShortLocation CharLocation LongLocation BooleanLocation ByteLocation和 ObjectLocation

其他的對象可能會附屬於一個Location 當值與地址變化聯系在一起的時候 change listeners可以接收到通知 最後 Locations是很懶惰的 雖然當值無效的時候change listeners會得到通知 但是新的值不會被重新計算直到需要它的時候 到目前為止 我指談論了介面的問題 當然 可以為我以上所提到的類型而隨時執行Locations

public static void main(String[] args) {

final IntVariable i = IntVariable make( );

i addChangeListener(new ChangeListener() {

@Override

public boolean onChange() {

System out println( onChange(): + i get());

return false;

}

});

System out println(i get() +

isMutable(): + i isMutable());

IntLocation i = IntConstant make( );

System out println(i get() +

isMutable(): + i isMutable());

i set(i get());

}

為了編譯並運行LocationDemo 請附加lib/shared/javafxrt jar到你的類路徑上 這個演示示例採用了IntVariable 和IntConstant類 兩個都執行了IntLocation介面 因此是Locations 使用靜態make()方法創建Instances 使用get()查詢當前值 正如你在圖 中所看到的 在初始化引發一個通知之後 設置一個值 它通過子抽象類ChangeListener來進行處理

圖 LocationDemo 輸出

當地址內容已經改變的時候 它的onChange()方法被調用 該方法返回一個Boolean值 指示監聽者是否仍然有效 返回false將導致監聽者從監聽者名單上刪除 Javadoc建議 當相關的弱引用被報告清除的時候 那些做它們自己弱引用管理的監聽者應該返回false

就像JGoodies Binding的ValueModel 還有Beans Binding的Property一樣 Locations 讀取和編寫類型值提供了一個方法 它們也可以通知注冊的監聽者關於值的變化 最後 你將會在以下的小節中看到它們用於建立綁定

建立綁定

像Beans Binding 和JGoodies Binding一樣 JavaFX運行包含一個輔助類來建立綁定 sun javafx runtime location Bindings 它是用於在兩個Locations之間建立bijective關系 這個意思是說如果一個值被更新 它所對應的也會被更新 在Locations被實例之後 它們被傳遞到bijectiveBind()

public class BindingDemo {

private static IntLocation i i ;

public static void main(String[] args) {

i = IntVariable make();

i = IntVariable make();

Bindings bijectiveBind(i i );

showValues();

i setAsInt( );

showValues();

i setAsInt( );

showValues();

}

private static void showValues() {

System out println( i : + i get());

System out println( i : + i get());

}

}

bijectiveBind(i i )在i 和 i 之間建立兩種依賴關系 如果其中一個被更新 例如 調用setAsInt() 其他的值也會變化 為了到達此目的 執行附加了兩個監聽者在Locations中分享狀態 方便的方法makeBijectiveBind()創建一個新的Location並它綁定到現存的綁定上面 如下所示

i = IntVariable make();

i = Bindings makeBijectiveBind(i );

BindingDemo 展示了如何使用它 它包含在/today/ / / /sources zip中 具體細節請參考Resources 圖 顯示了它的輸出

圖 BindingDemo 輸出

請注意只有可編譯的類型才能使用bijectiveBind()來進行綁定 以下的代碼行取自BindingDemo java(包含在sources zip中的) 第一眼看上去代碼沒什麼問題 但是 它們會拋出ClassCastException異常 這里發生什麼事情了呢?

ObjectLocation loc = IntVariable make();

ObjectLocation loc = BooleanVariable make();

Bindings bijectiveBind(loc loc );

在創建綁定的過程中 loc get()結果被傳遞到loc 的set()方法中 這個不會為Boolean 和 Integer工作的 為了避免這種問題 只要適當的確定參數泛型類型ObjectLocation 目前為止 我們已經看到兩個變數是如何被同步的 以下的小節中將看一看Swing組件是如何被綁定的

綁定Swing組件

幾乎每個JavaFX Script教程都是由顯示一個窗口 按鈕或是標簽的小程序開始的 JavaFX 使用Swing來構建並顯示這些組件 因此 我們可以假設Swing融入了JavaFX運行 不久你將會看到 這個也會應用於綁定

lib/desktop/javafx swing jar文件包含javafx ext swing包 它的類包含了大多數常見的Swing組件 如果你檢查它們 你將會注意到它們用$開始顯示各區域 它們的類型是ObjectVariable 它可以執行ObjectLocation

圖 在Eclipse的Members視圖中SwingLabel

考慮到這個介面屬於 sun javafx runtime location包 它是安全的假設這樣的Locations可以綁定到其他的變數上 以下的程序展示你是如何做到這個的 為了編譯並運行這個示例 請添加lib/shared/javafxrt jar lib/desktop/javafx swing jar lib/desktop/Scenario jar 以及 lib/desktop/javafxgui jar到你的類路徑上

public class SwingDemo {

public static void main(String[] args) {

JFrame f = new JFrame();

f setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);

JPanel p = new JPanel(new BorderLayout());

f setContentPane(p);

SwingLabel label = new SwingLabel();

ObjectLocation text =

Bindings makeBijectiveBind(label $text);

p add(label getJComponent() BorderLayout CENTER);

f pack();

f setVisible(true);

text set( Hello JavaFX! );

}

}

除了這個很有用的創建並顯示窗口的Swing代碼之外 還有三件比較重要的事情要做

SwingLabel被實例化並分配到label

Location被分配到test並綁定到label 的$text上

標簽被有層次的添加到組件上

請注意你不能直接添加SwingLabel到容器中 相反 它的getJComponent()方法用來獲取JComponent實例

雖然這個簡單的例子展示了一個Swing組件如何被綁定到一個變數上的 但是卻沒有說明使用JavaFX 綁定的好處 在我以前的文章 Binding Beans 中 我演示了如何使用JGoodies Binding 和 Beans Binding來執行一個簡單的音量控制

VolumeControl示例

音量控制是基於一個簡單的特定應用的POJO叫做Volume 它有兩個區域 volume 和mute 如圖 所示 它通過一個復選框和一個滑塊進行操作 標簽顯示現在的volume值 除此之外 mute控制音量是否調整

圖 音量控制示例

涉及Swing組件和POJO區域之間的關系如下

復選框設置mute

滑塊設置volume

Mute選擇或不選擇復選框

Volume設置成滑塊的位置

Mute啟用或禁用滑塊

Volume設置標簽文本

完整的來源包含在sources zip中 細節請參考Resources部分 它的結構很像我以前的文章中的版本 所以很容易比較不同的版本 為了編譯並運行VolumeControl 請添加lib/shared/javafxrt jar lib/desktop/javafx swing jar lib/desktop/Scenario jar 和lib/desktop/javafxgui jar到你的類路徑

首先 所有相關的組件都要初始化 這個發生在initComponents()中 例如 垂直壞塊被創建並有如下設置

sliderVolume = new SwingSlider();

sliderVolume $vertical set(true);

在initEventHandling()中建立綁定 例如 復選框與mute鏈接 用以下命令Bindings bijectiveBind(checkboxMute $selected volume mute); 當復選框被選擇的時候禁用滑塊是通過添加一個監聽者到mute上實現的

volume mute addChangeListener(new ChangeListener() {

@Override

public boolean onChange() {

sliderVolume $enabled set(! volume mute get());

return true;

}

});

每次volume mute 改變的時候 onChange()就會被調用 如果它變成true 滑塊就被禁用 如果變成false 滑塊就再次使用 這個狀態用sliderVolume $enabled set()來設置 相同的方法同樣適用於創建標簽文本 滑塊的值用Integer代表 正如我們早前已經看到的 它不能綁定到Strings上 轉換完成如下

public boolean onChange() {

labelInfo $text set(volume volume get() toString());

return true;

}

通過使用toString() get()結果變成a String並傳遞labelInfo $text set()

總結

很驚訝的看到JavaFX綁定在Swing應用程序中的使用是如此簡單 雖然綁定構架還沒有為這個所設計 但是它是一個相當體面的工作 盡管如此 本文還是故意忽視了一些問題

Sun會允許使用並可能重新分配部分JavaFX運行給非JavaFX應用程序嗎?

如何安全使用內部類?這里所描述的包還沒有被設計成公共的APIS

為什麼沒有成熟的綁定構架給Swing開發者們使用?

lishixin/Article/program/Java/JSP/201311/19126

❹ 如何在java中直接調用javaFX

當我們完成了MyScene類後,可以開始寫Java的主程序了,這是個標準的Swing程序中調用JavaFX代碼如下:
package swingtest; /** * JavaFXToSwingTest.java http://www.javafxblogs.com * @author Henry Zhang */ import java.awt.*; import javax.swing.*; import org.jfxtras.scene.SceneToJComponent; public class JavaFXToSwingTest extends JFrame { public static JTextField tf = new JTextField("JavaFX for SWING"); public JavaFXToSwingTest() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("JavaFX in SWING Test"); Container container = getContentPane(); container.setLayout(new BorderLayout()); String sceneClass = "swingtest.MyScene"; JComponent myScene = SceneToJComponent.loadScene(sceneClass); JLabel label = new JLabel(" Below is a JavaFX Animation: "); container.add(label, BorderLayout.NORTH); container.add(myScene, BorderLayout.CENTER); JPanel p = new JPanel(); p.setLayout(new FlowLayout()); tf.setColumns(28); p.add(tf); p.add(new JButton("SWING Button")); container.add(p, BorderLayout.SOUTH); pack(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater( new Runnable() { public void run() { new JavaFXToSwingTest().setVisible(true); } } } }

對大多數Java/Swing程序員來說,上述代碼應該是很容易理解的。我們通過 BorderLayout和FlowLayout在Swing的窗口(JFrame)中布置了一些圖形控制項。有2行代碼是和載入JavaFX的Scene相關的:
String sceneClass = "swingtest.MyScene"; JComponent myScene = SceneToJComponent.loadScene(sceneClass);

其中SceneToJComponent類是從JFXtras項目中來的。它提供了loadScene()的方法,可以把JavaFX的Scene類載入到一個JComponent對象中, 從而可以被Swing程序使用。運行這個程序,你可以看到一行文本」JavaFX for SWING」在窗口中央旋轉。如果你在輸入框中輸入新的句子,你會發現旋轉的文字也發生了改變。
在Swing程序中調用JavaFX代碼是可行的,那麼應該怎樣編譯和運行這樣的程序呢。其實,JavaFX的功能也就是一些jar文件,因此和Java的結合方式還是比較簡單的。編譯的方法主要有兩種,一種就是用JavaFX 的編譯器Javafxc來編譯Java和JavaFX代碼。第二種就是用Javafxc編譯JavaFX代碼,用Javac編譯Java代碼,望採納,謝謝。

怎麼開始寫一個JavaFX項目

首先需要jdk1.8,繼承Application,覆寫start(StageprimaryStage),再在主方法中調用靜態方法launch()。

start(Stage)舉例:

@Override
publicvoidstart(StageprimaryStage){
primaryStage.setTitle("HelloWorld!");
Buttonbtn=newButton();
btn.setText("Say'HelloWorld'");
btn.setOnAction(newEventHandler<ActionEvent>(){
@Override
publicvoidhandle(ActionEventevent){
System.out.println("HelloWorld!");
}
});

StackPaneroot=newStackPane();
root.getChildren().add(btn);
primaryStage.setScene(newScene(root,300,250));
primaryStage.show();
}

❻ javafx 中main()方法並沒調用start()方法,start()是怎麼執行的

1.start()方法來啟動線程,真正實現了多線程運行,這時無需等待run方法體代碼執行完畢而直接繼續執行下面的代碼:
通過調用Thread類的start()方法來啟動一個線程,
這時此線程是處於就緒狀態,
並沒有運行。
然後通過此Thread類調用方法run()來完成其運行操作的,
這里方法run()稱為線程體,
它包含了要執行的這個線程的內容,
Run方法運行結束,
此線程終止,
而CPU再運行其它線程,

2.run()方法當作普通方法的方式調用,程序還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的代碼:

而如果直接用Run方法,
這只是調用一個方法而已,
程序中依然只有主線程--這一個線程,
其程序執行路徑還是只有一條,
這樣就沒有達到寫線程的目的。

舉例說明一下:
記住:線程就是為了更好地利用CPU,
提高程序運行速率的!

public class TestThread1{
public static void main(String[] args){
Runner1 r=new Runner1();
//r.run();//這是方法調用,而不是開啟一個線程
Thread t=new Thread(r);//調用了Thread(Runnable target)方法。且父類對象變數指向子類對象。
t.start();

for(int i=0;i<100;i++){
System.out.println("進入Main Thread運行狀態");
System.out.println(i);
}
}
}
class Runner1 implements Runnable{ //實現了這個介面,jdk就知道這個類是一個線程
public void run(){

for(int i=0;i<100;i++){
System.out.println("進入Runner1運行狀態");
System.out.println(i);
}
}
}

❼ Javafx怎麼播放flash,就是我用Java main函數執行,直接調用Javafx做好的頁面,為什麼不能播放flash

JavaFX Script 編程語言(以下稱為JavaFX)是Sun微系統公司開發的一種declarative, statically typed(聲明性的、靜態類型)腳本語言。JavaFX技術有著良好的前景,包括可以直接調用Java API的能力。因為 JavaFX Script是靜態類型,它同樣具有結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和發布單元,這些特性使得使用Java技術創建和管理大型程序變為可能。
只是java編程的一個方向,僅僅雪java編程不用裝這個,建議從基礎開始學。

❽ java編程JavaFX

JavaFX腳本是一種聲明式、靜態類型編程語言。它具有一等函數(first-class functions)、聲明式的語法、列表推導(list-comprehensions)及基於依賴關系的增量式求值(incremental dependency-based evaluation)等特徵。
JavaFX腳本為多種多樣的操作提供了聲明式、無中間程序邏輯的語法,這些操作包括創建2D動畫、設置屬性或者聲明在模式和視圖對象之間的綁定依賴關系。

❾ javaFX調用windows應用

JavaFX API詳解之Window
其中Window類可理解成一個窗體,用於存放Scene,並與用戶操作。一般window作為窗體,都用其子類Stage和PopupWindow。
看一下Window作為窗體的頂級類包含的一些共同屬性
eventDispatcher setEventDispatcher(EventDispatcher value)
focused: 焦點集中 setFocused(boolean)設置
x y width height: 位置及大小 setX(double),setY(double),setWidth(double),setHeight(double) 設置
onCloseRequest 關閉Window事件 setOnCloseRequest(EventHandler)
onHidden 隱藏事件 setOnHidden(EventHandler)
onHiding 隱藏事件,優先於OnHidden setOnHiding(EventHandler)
onShowing 顯示事件 setOnShowing(EventHandler)
onShown 顯示事件,在OnShowing之後 setOnShown(EventHandler)
opacity 透明 setOpacity(double) 值為0到1
scene 設置場景 setScene(Scene)
showing 是否是顯示狀態 isShowing()

Window的一些方法:
addEventFilter(EventType eventType, EventHandler eventFilter) 添加事件過濾
removeEventFilter(EventType eventType, EventHandler eventFilter)
addEventHandler(EventType eventType, EventHandler eventHandler) 添加事件
removeEventHandler(EventType eventType, EventHandler eventHandler)
buildEventDispatchChain(EventDispatchChain tail)
centerOnScreen() 使Window顯示中間
hide() 隱藏 實際就是關閉
show() 保護類型 顯示window
requestFocus() 要求焦點集中
sizeToScene() 使Window的大小匹配它Scene的大小。如果你沒有設置Window大小的話,那麼就是剛好匹配的(匹配不等於相等了,window始終要大Scene一些)。若果你設置了window大小,在調用該方法,則會改變window的大小以匹配Scene大小。 最好的例子是,你設置window大小,而不設置Scene大小,再調用該方法。
fireEvent(Event event) 調用指定的事件

Stage作為頂級容器,其主Stage由系統創建。額外的可由應用程序創建。
fullScreen 是否全屏,該屬性類型為ReadOnly,不可綁定。 setFullScreen(boolean) 雖然是全屏 但是width,height等屬性值仍不變,若在全屏的時候改變這些值,返回原來狀態的時候,使用改變後的值。
iconified 是否最小化 setIconified(boolean)
resizable 設置大小是否變化 setResizable(boolean) 為true則不能拉動stage的大小

閱讀全文

與javafx如何調用靜態方法相關的資料

熱點內容
監控電源如何安裝方法 瀏覽:588
拉珠百葉窗簾免打孔安裝方法 瀏覽:32
怎麼正確的敷面膜方法 瀏覽:876
眼底積水如何治療方法 瀏覽:84
掰手腕鍛煉的方法 瀏覽:159
現在有快速便宜檢測血糖的方法嗎 瀏覽:248
解決喝水不用嘴的方法 瀏覽:485
五年級數學盈虧的解決方法 瀏覽:375
梅樹苗的種植方法 瀏覽:992
如何調漂最快的方法視頻 瀏覽:542
用什麼方法可以看到指紋 瀏覽:163
oppo鎖定豎屏幕在哪裡設置方法 瀏覽:941
如何減掉大肚腩的土方法 瀏覽:211
鑒定有哪些方法 瀏覽:436
吃過期拉肚子怎麼治療最快方法 瀏覽:273
手部創傷出血最簡便有效的方法 瀏覽:473
白菜食用方法 瀏覽:44
金邊吊蘭爛心的治療方法 瀏覽:558
調洪演算都有哪些方法 瀏覽:618
桔子種子盆栽種植方法 瀏覽:755