JavaFX UI控件教程(七)之Checkbox
翻譯自? ?Checkbox
本章教授如何向JavaFX應(yīng)用程序添加復(fù)選框。
雖然復(fù)選框看起來(lái)類似于單選按鈕,但它們不能組合到切換組中以便一次選擇多個(gè)選項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱單選按鈕和切換按鈕章節(jié)。
圖6-1顯示了一個(gè)應(yīng)用程序的屏幕截圖,其中三個(gè)復(fù)選框用于啟用或禁用應(yīng)用程序工具欄中的圖標(biāo)。
圖6-1復(fù)選框示例
?
創(chuàng)建復(fù)選框
例6-1創(chuàng)建了兩個(gè)簡(jiǎn)單的復(fù)選框。
示例6-1創(chuàng)建復(fù)選框
//A checkbox without a caption CheckBox cb1 = new CheckBox(); //A checkbox with a string caption CheckBox cb2 = new CheckBox("Second");cb1.setText("First"); cb1.setSelected(true);創(chuàng)建復(fù)選框后,可以使用JavaFX API提供的方法對(duì)其進(jìn)行修改。在示例6-1中,該setText方法定義了c1復(fù)選框的文本標(biāo)題。該setSelected方法設(shè)置為true在啟動(dòng)應(yīng)用程序時(shí)選擇cb1復(fù)選框。
定義一個(gè)國(guó)家
復(fù)選框可以是已定義的,也可以是未定義的。定義后,您可以選擇或取消選擇它。但是,如果未定義復(fù)選框,則無(wú)法選擇或取消選中該復(fù)選框。使用類的setSelected和setIndeterminate方法的組合CheckBox來(lái)指定復(fù)選框的狀態(tài)。表6-1顯示了基于其屬性INDETERMINATE和復(fù)選框的復(fù)選框的三種狀態(tài)SELECTED。
表6-1復(fù)選框的狀態(tài)
| INDETERMINATE?= false SELECTED?= false | |
| INDETERMINATE?=false SELECTED?= true | |
| INDETERMINATE?= true SELECTED?= true/false |
當(dāng)應(yīng)用程序中的復(fù)選框表示可處于混合狀態(tài)的UI元素時(shí),您可能需要為應(yīng)用程序中的復(fù)選框啟用三種狀態(tài),例如“是”,“否”,“不適用”。對(duì)象的allowIndeterminate屬性CheckBox確定復(fù)選框是否應(yīng)循環(huán)通過(guò)所有三種狀態(tài):selected,deselected和undefined。如果變量是true,則控件將循環(huán)通過(guò)所有三個(gè)狀態(tài)。如果是false,控件將循環(huán)選擇和取消選擇狀態(tài)。下一節(jié)中描述的應(yīng)用程序構(gòu)造了三個(gè)復(fù)選框,并且只為它們啟用兩個(gè)狀態(tài)。
?
設(shè)置行為
示例6-2中的代碼片段創(chuàng)建了三個(gè)復(fù)選框,這樣,如果選中了復(fù)選框,則相應(yīng)的圖標(biāo)將顯示在工具欄中。
示例6-2設(shè)置復(fù)選框的行為
final String[] names = new String[]{"Security", "Project", "Chart"}; final Image[] images = new Image[names.length]; final ImageView[] icons = new ImageView[names.length]; final CheckBox[] cbs = new CheckBox[names.length];for (int i = 0; i < names.length; i++) {final Image image = images[i] =new Image(getClass().getResourceAsStream(names[i] + ".png"));final ImageView icon = icons[i] = new ImageView();final CheckBox cb = cbs[i] = new CheckBox(names[i]);cb.selectedProperty().addListener(new ChangeListener<Boolean>() {public void changed(ObservableValue<? extends Boolean> ov,Boolean old_val, Boolean new_val) {icon.setImage(new_val ? image : null);}}); }該names數(shù)組使用for循環(huán)創(chuàng)建一個(gè)復(fù)選框數(shù)組和相應(yīng)的圖標(biāo)數(shù)組。例如,第一個(gè)復(fù)選框cbs [0]被分配了“安全”文本標(biāo)題。同時(shí),getResourceStream當(dāng)創(chuàng)建第一個(gè)圖標(biāo)的圖像時(shí),image [0]接收“Security.png”作為該方法的文件名。如果選擇了特定復(fù)選框,則會(huì)將相應(yīng)的圖像分配給圖標(biāo)。如果取消選中復(fù)選框,則圖標(biāo)將接收null圖像,并且不會(huì)呈現(xiàn)圖標(biāo)。
圖6-2顯示了選擇Security和Chart復(fù)選框并取消選中Project復(fù)選框時(shí)的應(yīng)用程序。
圖6-2 Checkbox應(yīng)用程序的運(yùn)行情況
?
設(shè)置復(fù)選框的樣式
圖6-2中的復(fù)選框具有類的默認(rèn)外觀CheckBox。您可以使用該setStyle方法更改復(fù)選框的外觀,如例6-3所示。
示例6-3為復(fù)選框設(shè)置樣式
cb1.setStyle("-fx-border-color: lightblue; "+ "-fx-font-size: 20;"+ "-fx-border-insets: -5; "+ "-fx-border-radius: 5;"+ "-fx-border-style: dotted;"+ "-fx-border-width: 2;" );新樣式包括一個(gè)點(diǎn)綴淺藍(lán)色邊框和增加其文本標(biāo)題的字體大小。圖6-3顯示了應(yīng)用此樣式的cb1復(fù)選框。
圖6-3樣式復(fù)選框
要為應(yīng)用程序中的所有復(fù)選框設(shè)置特定樣式,請(qǐng)使用以下過(guò)程:
-
創(chuàng)建.css文件。
-
checkbox在.css文件中創(chuàng)建CSS類。
-
定義checkboxCSS類中的所有必需樣式。
-
在JavaFX應(yīng)用程序中,使用該setStyleClass方法啟用樣式表。
?
相關(guān)的API文檔 ?
-
CheckBox
-
JavaFX CSS規(guī)范
總結(jié)
以上是生活随笔為你收集整理的JavaFX UI控件教程(七)之Checkbox的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaFX UI控件教程(六)之Tog
- 下一篇: JavaFX UI控件教程(八)之Cho