我做一个dialog,上边有三个jcombobox(jcombobox1,jcombobox2,jcombobox3)和一个jtable。
要实现的是:打开dialog时,首先jcombobox1通过连接数据库,得到结果填充jcombobox1,
然后jcombobox2把jcombobox1中表示的内容作为参数连接数据库,得到结果填充jcombobox2,
接着jcombobox3把jcombobox2中表示的内容作为参数连接数据库,得到结果填充jcombobox3,
最后jtable把jcombobox3中表示的内容作为参数连接数据库,得到结果表示在jtable上。
jcombobox1,jcombobox2和jcombobox3中任何一个通过鼠标选择有变化,其他的组件上表示的内容都要变化。
下边是我的实现方法:
1,在dialog初始化时,调用下边的方法
public void init {
    调用jcombobox1表示内容的设定方法
    调用jcombobox2表示内容的设定方法
    调用jcombobox3表示内容的设定方法
    调用jtable表示内容的设定方法    jcombobox1.addItemListener(new ActionListener() {
        public  void  itemStateChanged(ItemEvent  e){  
            if(e.getStateChange()==ItemEvent.SELECTED){
                调用jcombobox2表示内容的设定方法
                调用jcombobox3表示内容的设定方法
                调用jtable表示内容的设定方法
            }
        }  
     });     jcombobox2.addItemListener(new ActionListener() {
        public  void  itemStateChanged(ItemEvent  e){  
            if(e.getStateChange()==ItemEvent.SELECTED){
                调用jcombobox3表示内容的设定方法
                调用jtable表示内容的设定方法
            }
        }  
     });     jcombobox3.addItemListener(new ActionListener() {
        public  void  itemStateChanged(ItemEvent  e){  
            if(e.getStateChange()==ItemEvent.SELECTED){
                调用jtable表示内容的设定方法
            }
        }  
     });}
jcombobox1和jcombobox2和jcombobox3的表示内容的设定方法中都是先清item,然后连接db,将db返回来
的结果设定到对应的jcombobox中。
上边就是我的实现方法,但是每次切换下拉菜单的时候各个控件中表示的内容却不对,不知道哪里出了
问题,请教各位,帮帮忙,谢谢了。
在线急等!!

解决方案 »

  1.   

    不好意思写错了
    这个jcombobox1.addItemListener(new ActionListener()应该改成 
    jcombobox1.addItemListener(new ItemListener()
      

  2.   

    你有取JComboBox的选项getSelectedIndex()了吗?你这样添加addItemListener的方式不好,实现一下ItemListener吧,把所有事件都统一到一个地方处理
      

  3.   


    这个不对吧,应该是上级影响下级,下级不影响上级.上级监听事件,通知下级的model
    model得到通知后向从数据库读取数据,发生改变,通知view
      

  4.   

    jcombobox1.addItemListener(this);
    jcombobox2.addItemListener(this);
    ...
    public void itemStateChanged(ItemEvent ie) {
    if (ie.getSource() == jcombobox1) {
    int selected = jcombobox1.getSelectedIndex();//选择了哪个选项
    ...
    }
    }