【问题标题】:Reciprocally influencing JComboBoxes相互影响 JComboBoxes
【发布时间】:2012-06-27 19:21:57
【问题描述】:

我正在开发一个程序,其中 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. 当 carBrandShowAll 项从 carBrandCombo 的第一种情况状态中选择时 然后 carBrandCombo 重新加载数据库中的所有相应项目, WheelsTypeCombo 也有选择的项目 wheelTypeShowAll 。
  3. 当我们从 carBrandCombo 中选择一个项目时,对应的车轮类型项目是 在wheelTypeCombo 中选择
  4. 如果选择了已经在对应关系中的项目,则没有 setSelectedItem 任一 JComboBoxes 都需要操作

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

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

【问题讨论】:

  • 如需更好的帮助,请尽快发帖SSCCE
  • 另见example

标签: java eclipse swing jcombobox itemlistener


【解决方案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() 或其他任何东西。

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

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多