javafx Combobox <integer>类型不匹配</integer>

时间:2013-05-30 15:09:04

标签: java javafx-2

我的问题如下:

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
}
}

这是我的代码片段,但显示了我遇到的问题。

我试过

  • 将“int year”变为“Integer year”
  • 访问overcmb_year.getSelectionModel()。select(new Integer(year))
  • 通过cmb_year.getSelectionModel()访问。选择(年)

始终导致参数类型不匹配。

导致这种情况的原因是什么?

2 个答案:

答案 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,可能会解决您的问题。