2014-11-24 85 views
0

我有一個editableJComboBox它與AutoCompleteDecoratorSwingX庫集成在一起。我的JComboBox也有一個ItemListener註冊。現在,請看下面的代碼。AutoCompleteDecorator正在中斷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

在調用parseInt之前嘗試打印(或在調試器中觀察)'client_name_id_map.get(selectedClientName)',以查看它包含的內容。 – Eran 2014-11-24 12:27:37

+0

你使用了一個'Map '嗎?另一個愚蠢的問題是,客戶端ID是否爲數字(如果您使用的是數值以外的'Number'對象)? – hfontanez 2014-11-24 12:34:50

+0

你是對的。它是'Map '。 ID是數字。 – 2014-11-24 12:36:47

回答

0

如果在地圖中未找到您正在查找的密鑰,則會出現該問題。

在這種情況下:

  • client_name_id_map.get(selectedClientName)將返回null
  • String.valueOf(client_name_id_map.get(selectedClientName))將返回 「空」
  • Integer.parseInt("null")會拋出異常

一個簡單的辦法:

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

      String sql = "r"; 
     }