我的问题如下:
class xxx {
@FXML
private Combobox<Integer> cmb_year;
...
public void method ()
{
int year=2013;
cmb_year.getItems().add(year);
cmb_year.setValue(year) ---> argumenttype mismatch
}
}
这是我的代码片段,但显示了我遇到的问题。
我试过
始终导致参数类型不匹配。
导致这种情况的原因是什么?
答案 0 :(得分:0)
如果您尝试设置选择的项目,则需要使用ComboBox的SelectionModel:
cmb_year.getSelectionModel().select(cmb_year.getItems().indexOf(year));
您还可以尝试setSelectedItem(year)
或selectLast()
。
答案 1 :(得分:0)
这可能仅仅是ComboBox未正确或完全初始化的问题。我从不使用ComboBoxes“开箱即用”。我使用几行代码来设置它们。
以下是我的一个对话框控制器类中的initialize()方法的代码摘录(此ComboBox显示了一个Institution对象列表):
// this first line gets the data from my data source
// the ComboBox is referenced by the variable 'cbxInst'
ObservableList<Institution> ilist = Institution.getInstitutionList();
Callback<ListView<Institution>, ListCell<Institution>> cellfactory =
new Callback<ListView<Institution>, ListCell<Institution>>() {
@Override
public ListCell<Institution> call(ListView<Institution> p) {
return new InstitutionListCell();
}
};
cbxInst.setCellFactory(cellfactory);
cbxInst.setButtonCell(cellfactory.call(null));
cbxInst.setItems(ilist);
这里的关键点是:
我定义了一个单元工厂来生成要显示的ComboBox的ListCell实例。
我使用工厂创建一个ListCell实例来初始化Button Cell。
为了完整性,这里是创建Institution ListCell实例的私有成员类:
private final class InstitutionListCell extends ListCell<Institution> {
@Override
protected void updateItem(Institution item, boolean empty){
super.updateItem(item, empty);
if (item != null) {
this.setText(item.getName());
} else {
this.setText(Census.FORMAT_TEXT_NULL);
}
}
}
如果您以类似的方式初始化ComboBox,可能会解决您的问题。