【问题标题】:AutoCompleteDecorator is interrupting ItemListenerAutoCompleteDecorator 正在中断 ItemListener
【发布时间】:2015-01-22 02:43:09
【问题描述】:

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

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

【问题讨论】:

  • 在调用 parseInt 之前尝试打印(或在调试器中查看)client_name_id_map.get(selectedClientName),以查看其中包含的内容。
  • 您使用的是Map<String, Integer>吗?另一个愚蠢的问题,客户端 ID 是数字吗(如果您使用的不是 Number 对象作为值)?
  • 你是对的。它是Map<String, Integer>。 ID 是数字。

标签: java swing combobox swingx itemlistener


【解决方案1】:

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

在这种情况下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 2013-10-18
    • 2012-09-09
    • 1970-01-01
    • 2014-12-13
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多