javafX初探(多选框)

52 篇文章 0 订阅
46 篇文章 66 订阅

本节我们介绍多选框的应用。多选按钮和单选按钮很相似,但是它不能被整合进一个开关按钮中。具体请看单选按钮和开关按钮的信息。本节我们创建一个如下图的应用:

创建多选框

//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来设置选中状态。

定义状态

多选框可以是定义和非定义的。如果是已定义的,那么多选框可以选中也可以不选中。但是当他是非定义的话,多选框不可以选中,也不可以不选中,我们可以使用setSelectedsetIndeterminate方法来设置多选框的选中状态的定义状态。如下图所示:

我们可以使用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);
	}
}


 

运行代码如下图所示:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值