Problema do valor de compensação do caixa de combinação
Eu tropecei em um problema com Comboboxes em javafx2.2. Este é o cenário:
Os usuários clicam no botão 'editFile'.Outro painel fica visível (com o método setVisible).Este painel contém 6 caixas de combinação. Três deles possuem itens fixos: cboReport, cboSales, cboSend. Três deles obtêm seus dados de um db (ObservableList) e são preenchidos quando o painel fica visível: cboFile, cboCustomer, cboVet
O usuário seleciona um número de arquivo do cboFile. O resto das caixas de combinação estão sendo definidas com os valores corretos.O usuário pressiona o botão salvar, o arquivo é salvo como pretendido.Em seguida, o usuário pressiona um botão de fechamento.Quando a janela é fechada, os dados no painel são redefinidos por meio de um método resetGUI_editFilePane (). Existem linhas como:
...
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 o usuário abre o painel novamente pressionando o botão 'editFile', percebo que somente as caixas de combinação 'fixed item' foram limpas, as comboboxes dinamicamente preenchidas mostram o último item selecionado, embora o valor da seleção sejanull
. Isso parece um erro gráfico para mim ou estou fazendo algo errado?
Existe alguma maneira de contornar esse problema ou qual é o melhor método para redefinir uma caixa de combinação?
EDIT 2014/08/27:
Isso não é oficialmente um bug (clearSelection () não limpa o valor):
https://bugs.openjdk.java.net/browse/JDK-8097244
A "solução" oficial é limpar o valor da ComboBox após limpar a seleção.
cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);