0

我正在开发一个程序,其中 2 个 JComboBoxes 必须设置彼此的选定项。让我们将它们的对象名称称为wheelTypeCombo 和carBrandCombo。他们的两个模型都包含从数据库中检索到的对象列表(第一个列表中的类型为 1 的对象,第二个列表中的类型为 2 的对象)以及相应类型的特殊 wheelTypeShowAll 和 carBrandShowAll。When either of the last 2 items are selected then all the containing items in both JComboBoxes are shown including themselves(the 2 special items).

JComboBoxes倒数关系的规则如下:

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

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

我将不胜感激任何级别的任何合理改进。

4

1 回答 1

1

如果我要这样做,我将创建两个自定义类 carBrand 和 WheelType,然后让它们中的每一个实现一个 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() 或其他任何内容进行静态调用。

可能有“更简单”的方法,例如为每个方法制作地图,但我认为这将是最“清晰”的方法。

于 2012-06-27T19:59:21.893 回答