JavaFX UI控件教程(四)之Button
翻譯自??Button
Button通過JavaFX API提供的類使開發(fā)人員能夠在用戶單擊按鈕時處理操作。該Button班是的擴展Labeled類。它可以顯示文本,圖像或兩者。圖3-1顯示了具有各種效果的按鈕。在本章中,您將學習如何創(chuàng)建這些按鈕類型。
圖3-1按鈕類型
?
創(chuàng)建一個按鈕
您可以Button使用Button類的三個構(gòu)造函數(shù)在JavaFX應用程序中創(chuàng)建控件,如示例3-1所示。
示例3-1創(chuàng)建按鈕
//A button with an empty text caption. Button button1 = new Button(); //A button with the specified text caption. Button button2 = new Button("Accept"); //A button with the specified text caption and icon. Image imageOk = new Image(getClass().getResourceAsStream("ok.png")); Button button3 = new Button("Accept", new ImageView(imageOk));因為Button類擴展了Labeled類,所以可以使用以下方法為沒有圖標或文本標題的按鈕指定內(nèi)容:
-
該setText(String text)方法-指定按鈕上的文本標題
-
所述setGraphic(Node graphic)方法-指定圖形圖標
示例3-2顯示了如何創(chuàng)建帶圖標但沒有文本標題的按鈕。
示例3-2向按鈕添加圖標
Image imageDecline = new Image(getClass().getResourceAsStream("not.png")); Button button5 = new Button(); button5.setGraphic(new ImageView(imageDecline));添加到應用程序后,此代碼片段將生成如圖3-2所示的按鈕。
圖3-2帶圖標的按鈕
在例3-2和圖3-2中,圖標是一個ImageView對象。但是,您可以使用其他圖形對象,例如,包含在javafx.scene.shape包中的形狀。為按鈕定義文本和圖形內(nèi)容時,可以使用該setGraphicTextGap方法設(shè)置它們之間的間隙。
Button該類的默認外觀區(qū)分按鈕的以下可視狀態(tài)。圖3-3顯示了帶圖標的按鈕的默認狀態(tài)。
圖3-3按鈕狀態(tài)
?
分配動作
每個按鈕的主要功能是在單擊時生成動作。使用類的setOnAction方法Button來定義用戶單擊按鈕時將發(fā)生的情況。示例3-3顯示了定義button2操作的代碼片段。
示例3-3定義按鈕的操作
button2.setOnAction(new EventHandler<ActionEvent>() {@Override public void handle(ActionEvent e) {label.setText("Accepted");} });ActionEvent是由...處理的事件類型EventHandler。一個EventHandler對象提供了handle以處理燒制一個按鈕的操作方法。示例3-3顯示了如何覆蓋該handle方法,以便當用戶按下button2時,標簽的文本標題設(shè)置為“已接受”。
您可以使用Button該類設(shè)置所需數(shù)量的事件處理方法,以引起特定行為或應用視覺效果。
應用效果
因為Button類擴展了Node類,所以可以應用javafx.scene.effect包中的任何效果來增強按鈕的視覺外觀。在示例3-4中,DropShadow當onMouseEntered事件發(fā)生時,效果應用于button3?。
示例3-4應用DropShadow效果
DropShadow shadow = new DropShadow(); //Adding the shadow when the mouse cursor is on button3.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>() {@Override public void handle(MouseEvent e) {button3.setEffect(shadow);} }); //Removing the shadow when the mouse cursor is off button3.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent>() {@Override public void handle(MouseEvent e) {button3.setEffect(null);} });圖3-4顯示了當鼠標光標在其上時以及何時關(guān)閉時按鈕3的狀態(tài)。
圖3-4帶投影的按鈕
?
造型按鈕
增強按鈕視覺外觀的下一步是應用由Skin類定義的CSS樣式。在JavaFX 2應用程序中使用CSS類似于在HTML中使用CSS,因為每種情況都基于相同的CSS規(guī)范。
您可以在單獨的CSS文件中定義樣式,并使用該setStyleClass方法在應用程序中啟用它們。此方法繼承自Node該類,可用于所有UI控件。或者,您可以使用該setStyle方法直接在代碼中定義按鈕的樣式。例3-5和圖3-4說明了后一種方法。
示例3-5設(shè)置按鈕樣式
button1.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");該-fx-font-size屬性設(shè)置button1的字體大小。該-fx-base屬性會覆蓋應用于按鈕的默認顏色。結(jié)果,button1為淺綠色,文本大小較大,如圖3-5所示。
圖3-5使用CSS設(shè)置樣式的按鈕
?
相關(guān)的API文檔 ?
-
Button
-
Labeled
總結(jié)
以上是生活随笔為你收集整理的JavaFX UI控件教程(四)之Button的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaFX UI控件教程(三)之Lab
- 下一篇: 如何在查看QQ空间发布过的照片