AutoCompleteDecorator正在中断ItemListener

我有一个editable JComboBox ,它与SwingX库的AutoCompleteDecorator集成在一起。 我的JComboBox也注册了一个ItemListener 。 现在,请看下面的代码。

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

无论如何,我的代码都不传递int idClient = Integer.parseInt(String.valueOf(client_name_id_map.get(selectedClientName))); 它总是以NumberFormatException结束。 令人惊奇的是,如果我删除AutoCompleteDecorator那么一切正常。

有人知道如何解决这个问题吗?

如果在地图中找不到您要查找的密钥,则会出现此问题。

在这种情况下:

  • client_name_id_map.get(selectedClientName)将返回null
  • String.valueOf(client_name_id_map.get(selectedClientName))将返回“null”
  • Integer.parseInt("null")会抛出exception

简单的解决方案:

  if(!selectedClientName.equals("Select Client")) { Integer idClient = client_name_id_map.get(selectedClientName); if (idClient != null) { // do something } String sql = "r"; }