0

可能重复:
动态 JComboBoxes

我是java程序的新手。我的程序有这个关于组合框的问题。我有 3 个组合框(cbxType、cbxItem 和 cbxColor)。我希望第二个组合框(cbxItem)中的项目列表根据第一个(类型)进行更改,然后第三个组合框的(cbxColor)项目列表根据第二个(cbxItem)中的选定项目进行更改。我一直在尝试用我自己的代码解决这个问题,当第一个组合框改变时,第二个组合框工作正常,但是在我改变后第三个组合框不会显示任何项目。这是我的代码。谢谢你们的帮助,对不起我的英语不好..

    private void viewCbxType(){
    String sql;


try {
    sql ="Select distinct productItem from Product ";
    if(cbxType.getSelectedItem() != "<<Product Type>>"){

        String prType = cbxType.getSelectedItem().toString();

        sql ="Select distinct productItem from Product WHERE productType='" +prType+"'";



            cbxItem.removeAllItem();
            cbxItem.setSelectedIndex(0);
        }
    }


    PreparedStatement st = conn.prepareStatement(sql);
    ResultSet rs =st.executeQuery();



    while (rs.next()) {
        String prItem = rs.getString("productItem");

        cbxItem.addItem(prItem);

    }
}catch (SQLException se) {}
}

我在 actionPerformed 中为我的第一个组合框调用该方法,并与第二个组合框类似

4

1 回答 1

0

您可以在组合框上实现一个动作监听器:

public class ComboBoxDemo ... implements ActionListener {
    . . .
        petList.addActionListener(this) {
    . . .
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String petName = (String)cb.getSelectedItem();
        updateLabel(petName);
    }
    . . .
}

此动作侦听器从组合框中获取新选择的项目,使用它来计算图像文件的名称,并更新标签以显示图像。当用户从组合框的菜单中选择一个项目时,组合框会触发一个动作事件。有关实现动作监听器的一般信息,请参阅如何编写动作监听器:

http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

这也可以帮助你

http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html

于 2012-11-28T18:02:46.690 回答