级联组合框java
在java应用程序中,我需要一个带有多个组合框的对话框,如a、B和C。a在init组件中填充,B在选择a中的项目时填充,C在填充B时填充。我知道基本方法,即为a&B设置一个侦听器,填充Item.SELECTED上的下一个框 让我感到困惑的是,当B项列表的长度为1时,该怎么办。对于单个项目,不可能更改选择,因此不会重新填充C。有人能给我一个提示吗 谢谢级联组合框java,java,combobox,cascade,Java,Combobox,Cascade,在java应用程序中,我需要一个带有多个组合框的对话框,如a、B和C。a在init组件中填充,B在选择a中的项目时填充,C在填充B时填充。我知道基本方法,即为a&B设置一个侦听器,填充Item.SELECTED上的下一个框 让我感到困惑的是,当B项列表的长度为1时,该怎么办。对于单个项目,不可能更改选择,因此不会重新填充C。有人能给我一个提示吗 谢谢 在树的每个级别,检查当前节点是否没有兄弟节点(同一父节点的子节点)。如果是这种情况,则以编程方式触发选择事件并加载当前节点的子节点。将空项添加到B
在树的每个级别,检查当前节点是否没有兄弟节点(同一父节点的子节点)。如果是这种情况,则以编程方式触发选择事件并加载当前节点的子节点。将空项添加到B如何?当B选择空项时,C忽略选择更改事件。问题已解决。我的问题是假设使用DefaultComboxModel(rootboxitems)初始化时会触发项状态更改。它没有;在初始填充和每次选择更改后,必须更新所有后续框。如果将每个框的更新代码放在一个单独的函数中以便可以重用,那么很容易做到这一点 我设计的例子是根据品牌、型号和颜色这三个属性选择汽车,例如“福特”、“野马”、“蓝色”。每个品牌可以有几个型号,每个型号都有自己的颜色列表 对话框和初始化为:
public CascadeGui(java.awt.Frame parent, boolean modal, Makes aMakes) {
super(parent, modal);
ArrayList<Make> makes;
Make selectedMake;
Model slectedModel;
initComponents();
makes = aMakes.GetMakesArrayList();
cboMakes.setModel(new javax.swing.DefaultComboBoxModel(makes.toArray(new Make[makes.size()])));
selectedMake = (Make) cboMakes.getSelectedItem();
cboModels.setModel(new javax.swing.DefaultComboBoxModel(selectedMake.GetModelsArray()));
slectedModel = (Model) cboModels.getSelectedItem();
cboColors.setModel(new javax.swing.DefaultComboBoxModel(slectedModel.GetColorsArray()));
}
如您所见,Make的新部分将更新Models框,然后更新Colors框。模型选择事件的相应代码为:
private void cboModelsItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == SELECTED) {
UpdateColorsCbo();
}
}
我将很高兴与大家分享Netbeans zip文件中的示例和/或回答问题。同时,作为一名Java程序员新手,我希望您能提出一些改进意见和建议
Ed我该怎么做?我知道的唯一方法是以编程方式更改选择,但如果只有一个项,则无需对其进行任何更改。我错过了什么?对不起,我不能理解你的困难。无论如何,你应该处理这个问题,即使有多种选择。如果用户选择默认的一个怎么办?如果有两个或更多,我可以通过编程选择第二个,然后选择第一个。如果只有一项……为什么要这样做?要么您有一个默认值,要么您允许空选择,但必须有更好的方法。
private void cboModelsItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == SELECTED) {
UpdateColorsCbo();
}
}