相互影响JComboBox

时间:2012-06-27 19:21:58

标签: java eclipse swing jcombobox itemlistener

我正在开发一个程序,其中2个JComboBox必须相互设置 选定的项目。让我们配音他们的对象名称wheelsTypeCombo和carBrandCombo。 它们的两个模型都包含从数据库中检索的对象列表(第一个列表中类型1的对象和第二个列表中类型2的对象)以及相应类型的特殊wheelsTypeShowAll和carBrandShowAll。当选择最后两个项目中的任何一个时,将显示两个JComboBox中的所有包含项目,包括它们自己(2个特殊项目)。

JComboBoxes互惠关系的规则如下:

  1. 当我们从wheelsTypeCombo中选择一个项目时,将重新加载carBrandCombo 所有汽车品牌只使用那些类型的轮胎和carBrandShowAll项目
  2. 当从carBrandCombo的第一种情况状态中选择carBrandShowAll项目时 然后carBrandCombo重新加载数据库中的所有相应项, wheelTypeCombo也有选定的项目wheelsTypeShowAll。
  3. 当我们从carBrandCombo中选择一个项目时,相应的轮子类型项目就是 在wheelsTypeCombo中选择
  4. 如果选择了已经处于对应关系的项目,则不会选择setSelectedItem 任何一个JComboBoxes
  5. 都需要操作

    我暂时尝试使用匿名的ItemListener类,当我将JComboBox添加到接口时,但发现自己正在打斗堆栈和空指针异常溢出可能是由内部调用方法调用引起的。

    我希望在任何级别上都能有任何合理的改进。

1 个答案:

答案 0 :(得分:1)

如果我要这样做,我会创建两个自定义类,carBrand和wheelsType,然后让每个类实现一个getUsers调用,返回它们自己的内部相关项列表:

public carBrand
    public static Enum allWheels
    List<wheelsType> myWheels;
    getWheels() {
        return myWheels;
    }
    setWheels();

public wheelsType
    public static Enum allBrands
    List<carBrands> myBrands;
    getBrands();
    setBrands();

然后在您的组合框代码中,保存您的车轮和品牌列表,然后使用

的结果更新Listmodel
getSelected().getBrands()

getSelected().getWheels().

然后,您还可以对getAllBrands()进行静态调用,或者在选择“全部”选项时进行静态调用。

可能有“更简单”的方法,比如为每个方法制作一张地图,但我认为这将是最“明确”的方式。

相关问题