组合框setValue JavaFX

时间:2015-01-08 12:04:43

标签: java combobox javafx fxml

我有一个组合框,我在节点初始化时为此组合框设置了默认值。但是,一旦从数据库中检索到某些数据,我想将此默认值更新为其他内容。

initialise() {
businessDateComboBox.setItems(config.retrievedPositionsData().getDistinctBusinssDate()); 
businessDateComboBox.setValue(config.retrievedPositionsData().getCurrentBusinessDate().toString());
}

setItems是一个ObservableList,而setValue是一个ObservableList,但我把它转换为字符串。

现在我使用一个单独的线程从数据库中检索项目。

public void readPositionsFromDataBase() throws Exception {
    Task<Integer> task = new Task<Integer>() {
        @Override protected Integer call() throws Exception {       
            config.positionViewPersister().readDataFromDataBase(null,null);
            return 0;
        }
    };
    Thread th = new Thread(task);
    th.setDaemon(true);
    th.start();
config.retrievedPositionsData().setCurrentBusinessDate("56")    
}

一旦完成,我想要使用为默认组合框值检索的最新值更新用户界面。我通过重新加载FXML和由初始化方法组成的FXML的相应控制器来执行此操作 - 当前初始化方法再次运行但用户界面未使用最新值进行更新。有谁知道为什么?

用户界面中组合框中的默认值现在应该是56,因为我设置它。当我打印businessDateComboBox.getValue()时,它给出56它只是不更新​​用户界面。

是否有任何等效的挥杆重绘或什么?

1 个答案:

答案 0 :(得分:0)

businessDateComboBox.setValue适用于可编辑ComboBox的编辑组件。我想你的不是,所以正确的方法应该通过SelectionModel

businessDateComboBox.getSelectionModel().select(...)