我的任务是创建一个带有两个组合框的面板,第二个组合框的项目应该依赖于第一个组合框中选择的内容。以下是我所做的代码片段。如果写得不好,我道歉。这是我第一次做这些事情。
// 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();
部分。
以下是输出的屏幕截图。
任何有关优化此产品的建议都非常受欢迎和欢迎。
谢谢,
答案 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"}));
}
}