我有两个组合框,第一个项目是(女性和男性)。我想当用户在第一个组合框中选择女性时,女性连衣裙列表将出现在第二个组合框中,当男性被选中时男性连衣裙列表将出现在第二个。可以使用JCombo框执行此功能吗?如果是的话我该怎么办呢?请给我举个例子。 任何帮助将不胜感激。
答案 0 :(得分:12)
查看如何使用How to Use Combo Boxes和How to Use Lists totorial中的模型。根据第一个组合框中的选择 - 重建,过滤或替换第二个组合框的模型。您可以使用/ extend DefaultComboBoxModel - JComboBox
使用的默认模型。例如,请考虑以下代码段:
final JComboBox genderComboBox = null;
final JComboBox itemComboBox = null;
final DefaultComboBoxModel hisModel = new DefaultComboBoxModel(new String[]{"a", "b", "c"});
final DefaultComboBoxModel herModel = new DefaultComboBoxModel(new String[]{"x", "y", "z"});
genderComboBox.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
if ("Men".equals(genderComboBox.getSelectedItem())){
itemComboBox.setModel(hisModel);
} else {
itemComboBox.setModel(herModel);
}
}
});
或者,在第一个组合中选择后,您可以手动重建第二个组合中的项目,即:使用JComboBox
方法removeAllItems()
和addItem()
。
答案 1 :(得分:1)
您必须将事件侦听器添加到第一个组合框。通过这种方式,您可以知道其选择何时发生变化,您可以查询它并使用适当的数据填充第二个组合框。
更多信息位于http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners