在我的项目中,我想要选择填写有用于COUNTRY,STATE,CITY的jcombobox 当我点击counrty然后它应该在那个国家显示相关的国家有多少,然后同样的状态也适用于城市
这是我的代码告诉我哪里出错了,这对于这个
是什么样的代码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 :(得分:0)
你的问题不是很清楚,但我认为你有三个组合框。国家,州和城市,您希望根据所选国家和城市在所选国家的基础上居住国家。 如果这是你想要的,那么最简单的选择是: //注意使用while而不是if会有多个值
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(); for(ItemListener l:itemListeners) cmbState.removeItemListener(升); //在这里用组合做你想做的事。 for(ItemListener l:itemListeners) cmbState.addItemListener(升);