Я наткнулся на проблему с Comboboxes в javafx2.2. Это сценарий:
- Пользователи нажимают кнопку "editFile".
- Открывается другая панель (с помощью метода setVisible).
Эта панель содержит 6 списков со списком. Три из них имеют фиксированные элементы: cboReport, cboSales, cboSend. Три из них получают свои данные из db (ObservableList) и заполняются, когда панель становится видимой: cboFile, cboCustomer, cboVet
- Пользователь выбирает номер файла из cboFile. Остальные выноски будут установлены с правильными значениями.
- Пользователь нажимает кнопку сохранения, файл сохраняется, как предполагалось.
- Затем пользователь нажимает кнопку закрытия.
Когда окно закрывается, данные на панели обновляются с помощью метода resetGUI_editFilePane(). Существуют строки типа:
...
cboReport.getSelectionModel().clearSelection();
cboSales.getSelectionModel().clearSelection();
cboSend.getSelectionModel().clearSelection();
cboFile.getSelectionModel().clearSelection();
cboCustomer.getSelectionModel().clearSelection();
cboVet.getSelectionModel().clearSelection();
cboFile.getItems().clear();
cboCustomer.getItems().clear();
cboVet.getItems.clear();
...
Когда пользователь снова открывает панель, нажимая кнопку "editFile", я замечаю, что только выделенные поля "fixed item" очистили свой выбор, динамически заполненные comboboxes показывают последний выбранный элемент, хотя значение из самого выбора null
. Это похоже на графическую ошибку для меня, или я делаю что-то неправильно?
Есть ли способ обойти эту проблему или лучший метод для reset комбобокса?
EDIT 2014/08/27:
Это официально не ошибка (clearSelection() не очищает значение):
https://bugs.openjdk.java.net/browse/JDK-8097244
Официальным "обходным решением" является очистка значения ComboBox после очистки.
cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);