我刚刚(永远)开始从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以及单击项目(或第一位置的空白行)时,提示文本才出现它永远不会再出现。选择空白项目时,是否可以显示提示文本?
谢谢!
答案 0 :(得分:0)
我知道我来晚了,但是有人可以阅读这篇文章以获取信息。
重要的是要说它虽然有效,但不是最佳解决方案。我不知道您的ComboBox设置为哪种类型,但是我假设您将其与String一起使用,因此可以将第一项设置为所需的文本。
这里的问题是,如果选择此组合框项目,则将使用getSelecionModel()。getSelectedItem()返回该确切的字符串
但是,更糟糕的是,如果将ComboBox设置为使用自己的对象填充,则将无法使用getSelecionModel()。selectedItemProperty()将ComboBox值绑定到模型,并且在那里会出现错误。
就像有人在评论中说的那样,请使用getSelecionModel()。ClearSelection()。
答案 1 :(得分:-1)
好吧,我有点黑了。我只是将空白实体的名称设置为与提示文本相同。由于ComboBox的提示文本以与所选项目的实际文本完全相同的方式显示,因此效果很好。