从零开始学习JavaFX(11) 控件篇之ChoiceBox

在这一节中,我们将会学习ChoiceBox的使用方法。

ChoiceBox也是很常用的UI控件,用于在多个选项中进行选择。

1.创建ChoiceBox

ChoiceBox cb = new ChoiceBox(FXCollections.observableArrayList(
    "First", "Second", "Third")
);

FXCollections按照官方说明是1:1复制的java.util.collections的方法,也是用于创建集合的。

运行效果如下:

2.创建带有文本和分割线的ChoickBox

ChoiceBox cb = new ChoiceBox();
cb.setItems(FXCollections.observableArrayList(
    "New Document", "Open ", 
    new Separator(), "Save", "Save as")
);

Separator也是一个JavaFX控件,主要是分割线的作用。

默认的时候Separator是横向分割线,当然,也可以设置为纵向分割线。

运行效果如下:

3.ChoickBox的选择事件处理

对于控件来说,事件处理始终是最重要的一部分。

当然控件的事件还是按照我之前说的属性机制来进行监听,如下所示:

final String[] fruits = new String[]{"Hello,Apple", "Hello Banana","Hello,Orange"};
final Label label = new Label();
final ChoiceBox cb = new ChoiceBox(FXCollections.observableArrayList("Apple", "Banana", "Orange"));
cb.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue observable, Number oldValue, Number newValue) {
                label.setText(fruits[newValue.intValue()]);
            }
});

同样的,我们通过监听ChoiceBox的selectedIndex属性来进行事件处理,将Label的文本更改为fruits数组中的内容。

运行如下:

4.应用提示文本

Tooltip是提示文本,可以很轻松的应用到各种控件上。

如下:

cb.setTooltip(new Tooltip("Select the fruit"));

当鼠标移动到控件上时,就会显示这个提示文本了。

运行如下:

那么这一节就到此为止了,有兴趣的朋友可以继续关注我的博客,谢谢。

5 thoughts on “从零开始学习JavaFX(11) 控件篇之ChoiceBox”

  1. 这里的addListenter()的方式,我照着用了一直报错。。。最后看了其他人用的lambda表达式,解决了
    List goods=goodsUtil.goods_select(null);
    String[] s=new String[goods.size()];
    int i;
    for(i=0;i{
    goodsField.setText(s[newv.intValue()]);
    });

    1. 常规的方式和lambda的方式都是可以用的,由于文章写的比较早,JavaFX进行了更新,我刚试了一下,现在变成了new ChangeListener< Number >(),增加了泛型,这样就可以编译通过了。使用Intellij编辑器,会自动提示你可以更改为lambda表达式,但原来的实现方法不需要变动。 🙂

发表评论

电子邮件地址不会被公开。