第六回 JavaFX2.0 UI 控件

原文地址http://download.oracle.com/javafx/2.0/ui_controls/overview.htm

 

 

JavaFX控件是通過API在場景圖形中使用結點構建的,所以它們可以使用javaFX平臺的富視覺特點。由於javaFX API是完全用Java語言實現的,所以可以輕鬆將javaFX UI 控件集成進已存在的Java應用中。

JavaFX 2.0中支持的UI控件

UI控件的構造類位於API的javafx.scene.control 包中。

控件列表包括了你可能很熟悉的用Java開發客戶端應用的典型UI組件。不過,JavaFX 2.0 SDK引入了新的Java UI 控件,比如TitledPane 和TableView .

Figure 1-1 是一副屏幕截圖,有三個TitledPane 元素和一個社交類型列表,並且列表可以滑入 (retract)和滑出 (extend).

Figure 1-1 Titled Panes

TitledPanes
Description of "Figure 1-1 Titled Panes" 

可以從 API文檔查看全部UI控件。

UI 控件類比Control類提供了更多的變量和方法,這樣就能以直觀的方式支持典型的用戶交互。你可以使用層疊樣式表(CSS)爲你的UI組件設計特殊樣式。對於某些個別任務,還可能要繼承Control 類來創建定製的UI 組件,或者使用Skin 接口爲已存在的控件定義一個新皮膚。

從樣例中的Ensemble 應用試着瞭解下控件的範圍、它們的行爲、可以實現的樣式。

特性和效果

由於javafx.scene.control包中的 UI 控件都繼承了 Node 類,所以它們可以和場景圖形的渲染、動畫、變換及動畫過度進行整合。

考慮創建一個按鈕,爲它添加倒影並通過時間線修改它的透明度來讓它閃動。

Figure 1-2 展示了這個按鈕的三個不同時間線上的狀態。左邊的圖像是不透明度設爲1.0時 ,中間的圖像是不透明度 0.8,最右邊的不透明度是0.5 .

Figure 1-2 Animated Button

Screenshot of the animated button
Description of "Figure 1-2 Animated Button" 

通過使用JavaFX API只用少量代碼就能實現這個任務。

Example 1-1 創建了一個無限的時間線並開始了它,裏面有一個600毫秒的關鍵幀設置按鈕的不透明度從默認值(1.0)向 0.0變化。setAutoReverse 使得時間線可以自動反向。

Example 1-1 Creating an Animated Button

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.util.Duration;
import javafx.scene.control.Button;
import javafx.scene.text.Font;
import javafx.scene.effect.Reflection;

...
Button button = new Button();
    button.setText("OK");
    button.setFont(new Font("Tahoma", 24));
    button.setEffect(new Reflection());
 
final Timeline timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.setAutoReverse(true);
final KeyValue kv = new KeyValue(button.opacityProperty(), 0);
final KeyFrame kf = new KeyFrame(Duration.millis(600), kv);
timeline.getKeyFrames().add(kf);
timeline.play();
...

你也可以應用 javafx.scene.effect 包中的其他效果,比如shadow, lighting, 或者 motion blur.

爲UI控件添加CSS裝飾

通過定義自己的Cascading Style Sheets (CSS)可以定製內建的UI控件。在JavaFX 應用中使用CSS很像在HTML中使用,因爲都必須遵循相同的CSS 規範。控件的視覺效果由.css文件定義,見代碼Example 1-2 .

Example 1-2 Defining Styles for UI Controls in the CSS File

/*controlStyle.css */
 
.scene{
    -fx-font: 14pt "Cambria Bold";
    -fx-color: #e79423;
    -fx-background: #67644e;
}
 
.button{
    -fx-text-fill: #006464;
    -fx-background-color: #e79423;
    -fx-border-radius: 20;
    -fx-background-radius: 20;
    -fx-padding: 5;
}

可以通過Scene類中的 getStylesheets 方法應用該效果,見Example 1-3 .

Example 1-3 Applying CSS

Scene scene = new Scene();
scene.getStylesheets().add("uicontrolssample/controlStyle.css");
//譯者注:添加外部css文件時,即使文件和類在同意目錄下,也要加上css所在的包名。

另外,你可以通過使用setStyle方法直接定義控件風格。 Example 1-4 中的 -fx-base 屬性爲場景中新增的雙態按鈕定義,它重寫了CSS文件中對應的屬性。

Example 1-4 Defining the Style of a Toggle Button in the JavaFX Application

ToggleButton tb3 = new ToggleButton ("I don't know");
tb3.setStyle("-fx-base: #ed1c24;");

Figure 1-3 展示了雙態按鈕的效果。

 

Figure 1-3 Applying CSS Style to a Toggle Button

Applying an alternative base color to a toggle button
Description of "Figure 1-3 Applying CSS Style to a Toggle Button" 

 

圖表

除了爲用戶接口提供典型元素外, JavaFX SDK在 javafx.scene.chart包中 提供了預置圖表。以下類型圖表已經可以支持了:area chart, bar chart, bubble chart, line chart, pie chart, and scatter chart。一個圖表可以包含幾個系類的數據。

Figure 1-4 是一個進口水果餅圖。

 

 

和其他Java客戶端工具不同,使用JavaFX SDK 只需要在應用中添加幾行代碼就能構建這樣的圖表。你也可以定義一系列的顏色表和風格、應用視覺效果、處理鼠標事件、創建動畫等。

來 Using JavaFX Charts 瞭解更多的圖表特性和功能信息。

 

集成JavaFX 2.0 UI 控件和 Swing

可以將 JavaFX UI 控件集成進已存在的用Swing構建的Java客戶端應用。

要集成JavaFX內容和Swing,請安裝以下步驟:

  1. 將JavaFX UI 控件一個一個地添加到javafx.scene.Scene 對象中的佈局容器中,比如一個group.

  2. Scene 對象加入Swing 應用.

即使把一個單獨的JavaFX 2.0 控件加入到已存在的Swing代碼中也要做上面的兩個步驟。

儘管它們被集成進了Swing程序,JavaFX 2.0 UI 控件也依然被菱鏡圖形庫(Prism graphical library)渲染 ,並具有全部的高級渲染能力。

第七回 瞭解更多二者的集成信息。

 

發佈了14 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章