java swing combobox swingx itemlistener

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"; }