【发布时间】:2012-05-09 05:12:41
【问题描述】:
我有两个组合框的物品第一个是(女性和男人)。我想要当用户在第一个组合盒中选择女性时,女装的衣服列表将出现在第二个组合盒中,当男人被选中男士礼服列表时将出现在第二个中。可以使用 JCombo 框执行此功能吗?如果是的话,我该怎么做,请给我一个例子。 任何帮助将不胜感激。
【问题讨论】:
我有两个组合框的物品第一个是(女性和男人)。我想要当用户在第一个组合盒中选择女性时,女装的衣服列表将出现在第二个组合盒中,当男人被选中男士礼服列表时将出现在第二个中。可以使用 JCombo 框执行此功能吗?如果是的话,我该怎么做,请给我一个例子。 任何帮助将不胜感激。
【问题讨论】:
在How to Use Combo Boxes 和How to Use Lists totorials 中查看如何使用模型。根据第一个组合框中的选择 - 重建、过滤或替换第二个组合框的模型。您可以使用/扩展DefaultComboBoxModel - JComboBox 使用的默认模型。例如考虑这个 sn-p:
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()。
【讨论】:
您必须将事件侦听器添加到第一个组合框。这样您就可以知道它的选择何时发生变化,您可以询问它并用适当的数据填充您的第二个组合框。
更多信息在http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners
【讨论】: