JavaFX UI控件教程(二)之JavaFX UI控件
翻譯自? JavaFX UI控件?
本章概述了通過API提供的JavaFX UI控件。
JavaFX UI控件是使用場景圖中的節點構建的。因此,控件可以使用JavaFX平臺的視覺豐富功能。由于JavaFX API完全用Java實現,因此您可以輕松地將JavaFX UI控件集成到現有的Java應用程序中。
圖1-1顯示了您可以在Ensemble示例應用程序中找到的典型UI控件。嘗試使用此應用程序來評估各種控件,它們的行為和可用樣式。
圖1-1 JavaFX UI控件
?
JavaFX 2中支持的UI控件
構造UI控件的類駐留在javafx.scene.controlAPI?的包中。
UI控件列表包括您可能從之前使用Java開發的客戶端應用程序中識別的典型UI組件。然而,JavaFX的2 SDK引入了新的Java UI控件,如TitledPane,ColorPicker,和Pagination。
圖1-2顯示了三個TitledPane元素的屏幕截圖,其中包含社交網絡應用程序的設置列表。列表可以滑入(縮進)和滑出(擴展)。
圖1-2標題窗格
有關UI控件的完整列表,請參閱API文檔。
UI控件類提供了除類之外的其他變量和方法Control,以直觀的方式支持典型的用戶交互。您可以通過應用層疊樣式表(CSS)為UI組件指定特定樣式。對于某些異常任務,您可能需要擴展Control類以創建自定義UI組件,或使用該Skin界面為現有控件定義新外觀。
特點和效果
由于javafx.scene.control包中的UI控件都是Node類的擴展,因此可以將它們與場景圖渲染,動畫,轉換和動畫過渡集成在一起。
考慮創建按鈕,對其應用反射以及通過將其不透明度從其最大值更改為其最小值來設置動畫的任務。
圖1-3顯示了通過動畫時間軸的按鈕的三種狀態。左側圖像顯示不透明度設置為時的按鈕1.0,中央圖像顯示不透明度設置為0.8,右側圖像顯示不透明度設置為0.5。
圖1-3動畫按鈕
通過使用JavaFX API,您只需幾行代碼即可實現此任務。
示例1-1創建并啟動一個不確定的時間軸,其中在600毫秒的關鍵幀內,按鈕的不透明度從其默認值(1.0)變為0.0。該setAutoReverse方法啟用相反的順序。
示例1-1創建動畫按鈕
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包中可用的其他視覺效果,例如陰影,光照或運動模糊。
使用CSS設置UI控件樣式
您可以通過定義自己的層疊樣式表(CSS)來自定義內置UI控件的外觀。在JavaFX應用程序中使用CSS與在HTML中使用CSS非常相似,因為每種情況都基于相同的CSS規范??丶目梢暊顟B由.css文件定義,如例1-2所示。
示例1-2在CSS文件中定義UI控件的樣式
/*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; }您可以通過類的getStylesheets方法在應用程序中啟用樣式Scene,如例1-3所示。
示例1-3應用CSS
Scene scene = new Scene(); scene.getStylesheets().add("uicontrolssample/controlStyle.css");此外,您可以使用該setStyle方法直接在應用程序的代碼中定義控件的樣式。-fx-base為示例1-4中的切換按鈕定義的屬性將覆蓋.css文件中為添加到場景的所有控件定義的相應屬性。
示例1-4在JavaFX應用程序中定義切換按鈕的樣式
ToggleButton tb3 = new ToggleButton ("I don't know"); tb3.setStyle("-fx-base: #ed1c24;");圖1-4顯示了樣式化切換按鈕在添加到應用程序時的外觀。
圖1-4將CSS樣式應用于切換按鈕
圖表
除了用戶界面的典型元素之外,JavaFX SDK還在javafx.scene.chart包中提供預制圖表。目前支持以下類型的圖表:面積圖,條形圖,氣泡圖,折線圖,餅圖和散點圖。圖表可能包含幾個系列的數據。
圖1-5顯示了導入水果的餅圖。
圖1-5餅圖
與其他Java客戶端工具包不同,使用JavaFX SDK,您可以通過添加幾行代碼在應用程序中構建這樣的圖表。您還可以定義各種顏色方案和樣式,應用視覺效果,處理鼠標事件以及創建動畫。
有關圖表功能的更多信息,請參閱使用JavaFX圖表。
在Swing中集成JavaFX 2 UI控件
您可以將JavaFX UI控件集成到基于Swing工具包構建的現有Java客戶端應用程序中。
要將JavaFX內容集成到Swing應用程序中,請使用以下步驟:?
將所有JavaFX UI控件javafx.scene.Scene逐個添加到對象中,在布局容器中或作為一個組添加。
將Scene對象添加到Swing應用程序的內容中。
如果需要在現有Swing代碼中放置單個JavaFX 2控件,則必須執行上述兩個步驟。
即使將它們集成到Swing應用程序中,JavaFX 2 UI控件仍然使用Prism圖形庫進行渲染,并充分利用其高級渲染功能。
有關JavaFX和Swing互操作性的更多信息,請參閱Swing教程中的JavaFX。
總結
以上是生活随笔為你收集整理的JavaFX UI控件教程(二)之JavaFX UI控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone听筒声音突然变小
- 下一篇: 24 期免息 + 赠一年延长保:小米 1