问题描述
我做一个dialog,上边有三个jcombobox(jcombobox1,jcombobox2,jcombobox3)和一个jtable。要实现的是:打开dialog时,首先jcombobox1通过连接数据库,得到结果填充jcombobox1,然后jcombobox2把jcombobox1中表示的内容作为参数连接数据库,得到结果填充jcombobox2,接着jcombobox3把jcombobox2中表示的内容作为参数连接数据库,得到结果填充jcombobox3,最后jtable把jcombobox3中表示的内容作为参数连接数据库,得到结果表示在jtable上。jcombobox1,jcombobox2和jcombobox3中任何一个通过鼠标选择有变化,其他的组件上表示的内容都要变化。下边是我的实现方法:1,在dialog初始化时,调用下边的方法publicvoidinit{调用jcombobox1表示内容的设定方法调用jcombobox2表示内容的设定方法调用jcombobox3表示内容的设定方法调用jtable表示内容的设定方法jcombobox1.addItemListener(newActionListener(){publicvoiditemStateChanged(ItemEvente){if(e.getStateChange()==ItemEvent.SELECTED){调用jcombobox2表示内容的设定方法调用jcombobox3表示内容的设定方法调用jtable表示内容的设定方法}}});jcombobox2.addItemListener(newActionListener(){publicvoiditemStateChanged(ItemEvente){if(e.getStateChange()==ItemEvent.SELECTED){调用jcombobox3表示内容的设定方法调用jtable表示内容的设定方法}}});jcombobox3.addItemListener(newActionListener(){publicvoiditemStateChanged(ItemEvente){if(e.getStateChange()==ItemEvent.SELECTED){调用jtable表示内容的设定方法}}});}jcombobox1和jcombobox2和jcombobox3的表示内容的设定方法中都是先清item,然后连接db,将db返回来的结果设定到对应的jcombobox中。上边就是我的实现方法,但是每次切换下拉菜单的时候各个控件中表示的内容却不对,不知道哪里出了问题,请教各位,帮帮忙,谢谢了。在线急等!!
解决方案
解决方案二:
不好意思写错了这个jcombobox1.addItemListener(newActionListener()应该改成jcombobox1.addItemListener(newItemListener()
解决方案三:
你有取JComboBox的选项getSelectedIndex()了吗?你这样添加addItemListener的方式不好,实现一下ItemListener吧,把所有事件都统一到一个地方处理
解决方案四:
引用2楼biaogege的回复:
jcombobox1,jcombobox2和jcombobox3中任何一个通过鼠标选择有变化,其他的组件上表示的内容都要变化。
这个不对吧,应该是上级影响下级,下级不影响上级.上级监听事件,通知下级的modelmodel得到通知后向从数据库读取数据,发生改变,通知view
解决方案五:
jcombobox1.addItemListener(this);jcombobox2.addItemListener(this);...publicvoiditemStateChanged(ItemEventie){if(ie.getSource()==jcombobox1){intselected=jcombobox1.getSelectedIndex();//选择了哪个选项...}}