2013-08-26 19 views
0

我的項目中我想選擇填充jcombobox,這些都是國家,州,城市 當我點擊國家時,它應該在該國出現相關數量沙爹是有,然後與國家同樣的事情也爲城市在java中使用jcombobox過濾java代碼的國家/地區 - 城市

這裏是我的代碼告訴我是錯的,什麼它會爲這個

private void cmbcountryPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {               
     try{ 
      //JOptionPane.showMessageDialog(null,"hello"); 
      String sql= "SELECT StateName From state where Country_Id=? "; 
      prst=con.prepareStatement(sql); 
      prst.setString(1, cmbcountry.getSelectedItem().toString()); 
      prst.execute(); 
      rs=prst.executeQuery(); 

      if(rs.next()){     
        cmbstate.setSelectedItem(rs.getString("state"));       
      } 
     } catch(Exception e) 
      { 
      JOptionPane.showMessageDialog(null,e); 
     } 

     fillstate(cmbcountry.getSelectedIndex()); 

    } 

回答

0

你的問題不是很清楚,但我是正確的代碼認爲你有三個組合框。國家,州和城市,您希望根據選定的國家和選定的國家選擇國家和城市來填充國家。 如果這是你想要那麼最簡單的辦法是什麼: //注意使用而代替,如果作爲被選中狀態時,會有多個值

cmbstate.removeAllItems(); 
Vector<String> items = new Vector<String>(); 
while(rs.next()) 
{     
    items.addElement(rs.getString("state"));       
} 
ComboBoxModel model = new DefaultComboBoxModel(items); 
cmbState.setModel(model); 

同樣爲城市組合框。

每次創建一個新模型並不是最好的方法,所以另一個選項可以通過循環調用cmbState.addItem(String);。 在任何情況下,您可能需要從正在播放的組合框中移除偵聽器,因爲在對數據進行任何更改時會觸發偵聽器。你可以這樣做:

ItemListener [] itemListeners = cmbState.getItemListeners(); (ItemListener l:itemListeners) cmbState.removeItemListener(l); //在這裏做你想要的組合。 (ItemListener l:itemListeners) cmbState.addItemListener(l);

+0

非常感謝 – sud0074

相關問題