我有俩个JComboBox一个表示原料名称,一个表示原料规格(一种原料,有多种规格)。(这俩个JComboBox一个叫c1,另一个叫c2,c1是原料名称,c2是原料规格)
在数据库内有一个原料属性表,只有这两列(原料名称和原料规格,表名叫yl_shuxing,列名叫yl_name和yl_guige)。
现在我想实现的是:在c1选择一种名称时,c2就会出现相应的规格。
我自己的想法是我用一个Select语句就可以实现,语句如下:"SELECT yl_guige FROM yl_shuxing where yl_name='"+c1.getSelectedItem().toString().trim()+"'"
这样把表中的相应的规格就出来了,我的就是实现不了,是不是这种方法不可以啊,还有什么方法吗?我的JComboBox不是固定的,可以随时添加。谢谢各位
在数据库内有一个原料属性表,只有这两列(原料名称和原料规格,表名叫yl_shuxing,列名叫yl_name和yl_guige)。
现在我想实现的是:在c1选择一种名称时,c2就会出现相应的规格。
我自己的想法是我用一个Select语句就可以实现,语句如下:"SELECT yl_guige FROM yl_shuxing where yl_name='"+c1.getSelectedItem().toString().trim()+"'"
这样把表中的相应的规格就出来了,我的就是实现不了,是不是这种方法不可以啊,还有什么方法吗?我的JComboBox不是固定的,可以随时添加。谢谢各位
int i=0;
try{
while(rs.next()){
name=rs.getString(1);
ci1[i]=name;
i++;
}
}catch(Exception k5){
System.out.println("测试");
}
c1=new JComboBox(ci1);
c1.setEditable(true);
c2=new JComboBox(ci2);
c2.setEditable(true);
ResultSet rs1 = Sqlconn.getStatement().executeQuery("SELECT yl_guige FROM yl_shuxing where yl_name='"+c1.getSelectedItem().toString().trim()+"'" );
int i1 = 0;
System.out.println(c1.getSelectedItem().toString().trim());
while(rs1.next()){
name1=rs1.getString(1);
ci2[i1]=name1;
i1++;
}
frame.setSize(200, 80);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] opsBox1 = { "标题1", "标题2", "标题3" };
final String[][] opsBox2 = {//
{ "联动1-1", "联动1-2", "联动1-3" },//
{ "联动2-1", "联动2-2", "联动2-3" }, //
{ "联动3-1", "联动3-2", "联动3-3" }, };
final JComboBox cbox1 = new JComboBox(opsBox1);
final JComboBox cbox2 = new JComboBox(opsBox2[0]);
cbox1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getSource().equals(cbox1)) {
cbox2.removeAllItems();
int selected = cbox1.getSelectedIndex();
for (String value : opsBox2[selected]) {
cbox2.addItem(value);
}
}
}
});
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(cbox1, BorderLayout.NORTH);
frame.getContentPane().add(cbox2, BorderLayout.SOUTH);
frame.setVisible(true);