我有两个组合框,第一个里的选项是(女士和男士)。当用户选择第一个组合框中的女士时,女装列表将出现在第二个组合框中;当选择男士时,则会出现男装列表。可以使用JCombo Box实现这个功能吗?如果可以,请给我一个例子。
任何帮助都将不胜感激。
参考如何使用组合框和如何使用列表教程,了解如何处理模型。根据第一个组合框的选择 - 重构、过滤或替换第二个组合框的模型。您可以使用或扩展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()
。
您需要为第一个组合框添加事件监听器。这样,当其选择发生变化时,您就可以查询它并使用适当的数据填充第二个组合框。
更多信息请参见http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners