我有ObservableList<Fruits> fruits
。每个水果对象都有名称和值参数。对象是:{&#34; apples&#34;,22},{&#34; oranges&#34;,3}和{&#34; pears&#34;,5}。我将这些项目添加到ComboBox
:
fruitComboBox.setItems(fruits);
如何根据对象的名称从此ComboBox
获取项目索引?例如,得到&#34; oranges&#34;的索引。对象
我需要获取item的索引,以便我可以使用:
fruitComboBox.getSelectionModel.select(index);
完整代码如下:
fruitComboBox.setItems(fruits);
fruitFactory = lv -> new ListCell<Fruits>){
@Override
protected void updateItem(Fruits fruit, boolean empty) {
super.updateItem(fruit, empty);
setText(empty ? "" : fruit.getName + ": " + fruit.getValue);
}
};
fruitComboBox.setCellFactory(fruitFactory);
fruitComboBox.setButtonCell(fruitFactory.call(null));
对于不同的人,我需要默认选择不同的水果。我尝试使用:
fruitComboBox.getSelectionModel().select(orangeObject);
但它显示ButtonCell
中没有格式化的对象,也没有在开放ComboBox
中进行任何选择。使用索引给出了完美的结果:
fruitComboBox.getSelectionModel().select(2);
唯一的问题是,我不知道如何根据其中一个参数获取ComboBox
中的项目索引。
答案 0 :(得分:0)
为什么不这样做:
for (Fruit fruit : fruitComboBox.getItems()) {
if ("oranges".equals(fruit.getName())) {
fruitComboBox.getSelectionModel().select(fruit);
break ;
}
}
或者,如果您更喜欢基于流的解决方案
fruitComboBox.getItems().stream()
.filter(fruit -> "oranges".equals(fruit.getName()))
.findAny()
.ifPresent(fruitComboBox.getSelectionModel()::select);
答案 1 :(得分:-1)
只需简单地获取组合框中所选项目的索引即可使用组合框的.getselectedindex()方法