我有一个editable
JComboBox
,它与AutoCompleteDecorator
SwingX
库集成在一起。我的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
,那么一切正常。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
如果在地图中找不到您要查找的密钥,则会出现此问题。
在这种情况下:
client_name_id_map.get(selectedClientName)
将返回null String.valueOf(client_name_id_map.get(selectedClientName))
将返回" null" Integer.parseInt("null")
会抛出异常一个简单的解决方案:
if(!selectedClientName.equals("Select Client"))
{
Integer idClient = client_name_id_map.get(selectedClientName);
if (idClient != null) {
// do something
}
String sql = "r";
}