0

在我的项目中,当我点击国家时,我想选择填写国家、州、城市的 jcombobox,然后它应该显示在那个国家有多少个国家,然后城市也有同样的国家

这是我的代码,告诉我哪里错了,什么是正确的代码

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());

    }  
4

1 回答 1

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(l); //用这里的组合做你想做的事。for(ItemListener l: itemListeners ) cmbState.addItemListener(l);

于 2013-08-27T11:04:07.713 回答