Sono incappato in un problema con i Combobox in javafx2.2. Questo è lo scenario:Problema di svuotamento casella Combo
- Gli utenti fanno clic sul pulsante "modificaFile".
- Un altro riquadro diventa visibile (con il metodo setVisible).
Questo riquadro contiene 6 caselle combinate. Tre di questi hanno elementi fissi: cboReport, cboSales, cboSend. Tre di loro ottenere i loro dati da un db (ObservableList) e ottenere popolato quando il riquadro diventa visibile: cboFile, cboCustomer, cboVet
- l'utente seleziona un numero di file dal cboFile. Il resto delle caselle combinate è impostato con i valori corretti.
- L'utente preme il pulsante di salvataggio, il file viene salvato come previsto.
- Successivamente l'utente preme un pulsante di chiusura.
Quando la finestra si chiude, i dati nel riquadro vengono reimpostati tramite un metodo resetGUI_editFilePane(). C'è avere linee come:
...
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();
...
Quando l'utente apre nuovamente il riquadro premendo il pulsante 'editFile' noto che solo i comboboxes 'elemento fisso' hanno chiarito la loro selezione, i dynamicly pieno comboboxes mostro l'ultimo selezionato articolo anche se il valore della selezione stessa è null
. Mi sembra un bug grafico o sto facendo qualcosa di sbagliato?
Esiste un modo per aggirare questo problema o qual è il metodo migliore per reimpostare una casella combinata?
EDIT 2014/08/27:
Questo non è ufficialmente un bug (clearSelection() non lo fa un chiaro valore):
https://bugs.openjdk.java.net/browse/JDK-8097244
La "soluzione" ufficiale è quello di cancellare il valore della ComboBox dopo aver annullato la selezione.
cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);
Per coloro che sono 1.7.25+, facendo un _myCombobox.getSelectionModel() clearSelection();. _ ha funzionato bene per me. Non c'è bisogno di rimuovere l'intera combobox o qualsiasi altra cosa – francisOpt
La risposta di Himmanshu è molto più semplice ... – zaxy78