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