AutoCompleteDecorator正在中断ItemListener

时间:2014-11-24 11:39:45

标签: java swing combobox swingx itemlistener

我有一个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,那么一切正常。

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

1 个答案:

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