0

我正在尝试更新组合框的内容(使用 Griffon 1.2.0,带有 JavaFX 插件)。

我的模型:

class MyModel {
    List monthList = FXCollections.observableList([new DateMidnight()])

    def convertDate = [
            fromString: { String s ->
                return new DateMidnight(DateTimeFormat.forPattern("yyyy-MM").parseDateTime(s))
            },
            toString: { DateMidnight d ->
                return "2011-10"
            }
    ] as StringConverter
}

我的观点包含:

comboBox(items: (model.monthList), converter: model.convertDate)

现在我有一个控制器操作,当他们按下按钮时会调用它:

def load = {
        execInsideUIAsync {
            def months = myService.buildMonthList()
            model.monthList.addAll(months)
        }
} 

问题是组合框内容永远不会改变。谁能帮我理解我错过了什么?

还没有关于 ComboBox 的文档http://groovyfx.org/docs/guide/single.html#choiceBoxComboBox

另外,我是否正确实现了转换器?

4

1 回答 1

0

问题是 GroovyFX.comboBox 创建了一个新列表,而不是使用您作为项目参数传递的列表: tableView 也会出现此问题。一个临时的解决方法是直接设置 items 属性,像这样

 comboBox(id: 'combo')
 noparent { combo.items = model.monthList }
于 2013-02-23T11:04:07.567 回答