JavaFX:选择空白项后再次显示提示文本

时间:2018-09-03 17:39:06

标签: javafx text combobox selection prompt

我刚刚(永远)开始从Swing过渡到JavaFX,到目前为止,我已经相当不错了!我设法从实体列表中填充了一个ComboBox,并在列表顶部添加了一个空白项目,例如:

supplierSearch = new ComboBox();
    ObservableList<Supplier> suppliers = FXCollections.observableArrayList(supplierService.findAll());
    suppliers.add(0, new Supplier());
    supplierSearch.setItems(suppliers);
    supplierSearch.setPromptText("Recherche Fournisseur");
    supplierSearch.setMaxWidth(Double.MAX_VALUE);
    supplierSearch.getSelectionModel().selectedItemProperty().addListener((observable) -> 
    {
        filterProducts();
    });

困扰我的一件事是,选择空白项目时提示文本永远不会回来,只有在最初创建ComboBox以及单击项目(或第一位置的空白行)时,提示文本才出现它永远不会再出现。选择空白项目时,是否可以显示提示文本?

谢谢!

2 个答案:

答案 0 :(得分:0)

我知道我来晚了,但是有人可以阅读这篇文章以获取信息。

重要的是要说它虽然有效,但不是最佳解决方案。我不知道您的ComboBox设置为哪种类型,但是我假设您将其与String一起使用,因此可以将第一项设置为所需的文本。

这里的问题是,如果选择此组合框项目,则将使用getSelecionModel()。getSelectedItem()返回该确切的字符串

但是,更糟糕的是,如果将ComboBox设置为使用自己的对象填充,则将无法使用getSelecionModel()。selectedItemProperty()将ComboBox值绑定到模型,并且在那里会出现错误。

就像有人在评论中说的那样,请使用getSelecionModel()。ClearSelection()。

答案 1 :(得分:-1)

好吧,我有点黑了。我只是将空白实体的名称设置为与提示文本相同。由于ComboBox的提示文本以与所选项目的实际文本完全相同的方式显示,因此效果很好。