2017-08-09 66 views
0

使用的JComboBox和DefaultComboBoxModel的我的任务是创建一个小组有两个组合框,第二个组合框的项目应该依靠什么在第一个下拉框选择。以下是我所做的代码片段。如果这写得不好,我很抱歉。这是我第一次做这样的事情。在JAVA

// 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

任何优化这个建议是非常赞赏和欢迎。

谢谢,

回答

0

Combobox1有两个值辅音和元音和下面是对于ComboBox的动作perfromed事件的样品。

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"})); 
} 
}  
+0

我会尝试实现这一点。非常感谢。 – esjeidee