本节我们介绍多选框的应用。多选按钮和单选按钮很相似,但是它不能被整合进一个开关按钮中。具体请看单选按钮和开关按钮的信息。本节我们创建一个如下图的应用:
//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);
一旦我们创建了一个多选框,那么我们可以利用javaFx API提供的方法来修改这个文本框,setText方法来设置内容,使用setSelected来设置选中状态。
多选框可以是定义和非定义的。如果是已定义的,那么多选框可以选中也可以不选中。但是当他是非定义的话,多选框不可以选中,也不可以不选中,我们可以使用setSelected和setIndeterminate方法来设置多选框的选中状态的定义状态。如下图所示:
我们可以使用allowIndeterminate属性来让多选框有三种状态,如果是true,那么多选框就可以是非定义的,如果是false那么多选框只有选中和非选中两种状态。
package com.chu.button; import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.stage.Stage; /** * * @author chuer * @Description: TODO(用一句话描述该文件做什么) * @date 2015年2月3日 下午3:14:41 * @version V1.0 */ public class CheckboxTest extends Application { @Override public void start(Stage primaryStage) throws Exception { GridPane gp = new GridPane(); gp.setAlignment(Pos.CENTER); gp.setHgap(10); gp.setVgap(10); 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.setAllowIndeterminate(true); cb.selectedProperty().addListener((ov, old_val, new_val) -> { icon.setImage(new_val ? image : null); }); gp.add(cb, 0, i); } FlowPane flowPane = new FlowPane(); for (ImageView iv : icons) { flowPane.getChildren().add(iv); } gp.add(flowPane, 1, 0,1,3); Scene scene = new Scene(gp, 500, 300); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
运行代码如下图所示: