Combobox clearing value issue

Perneel picture Perneel · Aug 27, 2012 · Viewed 47.1k times · Source

I've stumbled on an issue with Comboboxes in javafx2.2. This is the scenario:

  • Users click on the 'editFile' button.
  • Another pane becomes visible (with the setVisible method).

This pane contains 6 comboboxes. Three of them have fixed items: cboReport, cboSales, cboSend. Three of them get their data from a db (ObservableList) and get populated when the pane becomes visible: cboFile, cboCustomer, cboVet

  • The user selects a file number from the cboFile. The rest of the comboboxes are beeing set with the correct values.
  • The user presses the save button, the file gets saved as intended.
  • Next the user presses a close button.

When the window closes, the data on the pane gets resetted through a resetGUI_editFilePane() method. There is have lines like:

...
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();
...

When the user opens the pane again by pressing the 'editFile' button I notice that only the 'fixed item' comboboxes have cleared their selection, the dynamicly filled comboboxes show the last selected item although the value from the selection itself is null. This looks like a graphics bug to me or am I doing something wrong?

Is there any way around this issue or what is the best method to reset a combobox?

EDIT 2014/08/27:
This is officially not a bug(clearSelection() does not clear value):
https://bugs.openjdk.java.net/browse/JDK-8097244

The official "workaround" is to clear the value of the ComboBox after clearing selection.

cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);

Answer

Himanshu ARORA picture Himanshu ARORA · Dec 6, 2013

It is very simple. You just need to work with the value property of ComboBox. here you go ....

ComboBox c;
c.valueProperty().set(null);

I hope this works for you :-D