在JAVA中使用JComboBox和DefaultComboBoxModel

时间:2017-08-09 09:15:06

标签: java combobox

我的任务是创建一个带有两个组合框的面板,第二个组合框的项目应该依赖于第一个组合框中选择的内容。以下是我所做的代码片段。如果写得不好,我道歉。这是我第一次做这些事情。

    // Sets up comboSearch and comboFor
    String[] searchList = {"Class", "Member", "Procedure"};
    final String[] forClassList = {"Parent", "Child", "Procedures", "Members", "All"};
    final JComboBox comboSearch = new JComboBox(searchList);
    final DefaultComboBoxModel<String> model = new DefaultComboBoxModel(forClassList);
    final JComboBox comboFor = new JComboBox(model);
    searchSelect = (String) comboSearch.getSelectedItem();
    comboSearch.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            searchSelect = (String) comboSearch.getSelectedItem();
            System.out.println(searchSelect);
            switch (searchSelect) {
                case "Class":
                    model.removeAllElements();
                    model.addElement("Parent");
                    model.addElement("Child");
                    model.addElement("Procedures");
                    model.addElement("Members");
                    model.addElement("All");
                    break;
                case "Member":
                    model.removeAllElements();
                    model.addElement("Owner");
                    break;
                case "Procedure":
                    model.removeAllElements();
                    model.addElement("Owner");
                    model.addElement("Owner Parent");
                    model.addElement("Owner Users");
                    break;
            }
        }
    });
    comboFor.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            forSelect = (String) comboFor.getSelectedItem();
            System.out.println(forSelect);
        }
    });

问题在于,每当我尝试执行此操作时,当我从第一个组合框中选择时,null将在实际值之前打印。我认为这是因为代码的model.removeAllElements();部分。

以下是输出的屏幕截图。

output

任何有关优化此产品的建议都非常受欢迎和欢迎。

谢谢,

1 个答案:

答案 0 :(得分:0)

Combobox1有两个值辅音和元音,下面是combobox1动作完成事件的样本。

 private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
if(jComboBox1.getModel().getSelectedItem().equals("Vowels")){
jComboBox2.setModel(new DefaultComboBoxModel(new String[]{"a","e","i","o","u"}));
}else{
 jComboBox2.setModel(new DefaultComboBoxModel(new String[]{"b","c","d","f"}));
}
}