java - AutoCompleteDecorator está interrumpiendo ItemListener
swing combobox (1)
Tengo un JComboBox editable que está integrado con AutoCompleteDecorator de la biblioteca SwingX . Mi JComboBox también está teniendo un ItemListener registrado también. Ahora, por favor, mira el siguiente código.
AutoCompleteDecorator.decorate(ClientNameCombo);
ClientNameCombo.addItemListener(new ClientNameComboAction());
private class ClientNameComboAction implements ItemListener
{
@Override
public void itemStateChanged(ItemEvent e)
{
String selectedClientName= ClientNameCombo.getSelectedItem().toString();
if(!selectedClientName.equals("Select Client"))
{
int idClient = Integer.parseInt(String.valueOf(client_name_id_map.get(selectedClientName)));
String sql = "r";
}
}
}
Pase lo que pase, mi código no pasa int idClient = Integer.parseInt(String.valueOf(client_name_id_map.get(selectedClientName))); siempre terminaba con NumberFormatException . Lo sorprendente es que, si elimino AutoCompleteDecorator , todo funciona bien.
¿Alguien sabe cómo solucionar esto, por favor?
El problema ocurriría cuando la clave que estás buscando no se encuentre en el mapa.
En tal caso :
-
client_name_id_map.get(selectedClientName)devolvería null -
String.valueOf(client_name_id_map.get(selectedClientName))devolverá "null" - y
Integer.parseInt("null")arrojaría una excepción
Una solución simple:
if(!selectedClientName.equals("Select Client"))
{
Integer idClient = client_name_id_map.get(selectedClientName);
if (idClient != null) {
// do something
}
String sql = "r";
}