java - 相互影响 JComboBox

标签 java eclipse swing jcombobox itemlistener

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

JComboBoxes的倒数关系规则如下:

  1. 当我们从wheelsTypeCombo中选择一个项目时,carBrandCombo将被重新加载 仅使用这些类型轮胎和 carBrandShowAll 项目的所有汽车品牌
  2. 当从 carBrandCombo 的第一种情况状态中选择 carBrandShowAll 项时 然后用数据库中的所有相应项目重新加载 carBrandCombo, 此外,wheelsTypeCombo 还具有所选项目wheelsTypeShowAll 。
  3. 当我们从 carBrandCombo 中选择一个项目时,相应的车轮类型项目是 在wheelsTypeCombo中选择
  4. 如果已选择对应关系中的项目,则不设置 setSelectedItem 任一 JComboBox 都需要执行操作

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

我很感激任何级别的任何合理改进。

最佳答案

如果我要这样做,我会创建两个自定义类,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() 或其他方法。

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

关于java - 相互影响 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11233505/

相关文章:

java - 将数据值作为整数类型而不是字符串写入 CSV 有哪些优点?

java - 我更改了jre,现在所有程序都有错误

java - 在Java中使用JLabel创建背景后无法将其他组件添加到窗口

java - 与 JPanel 不同对象中的字体尺寸

java - 使用 Apache POI 写入 xlsx 文件,在文件的最后一列中获得预期答案

java - 我怎样才能聚焦文本字段?

java - 堆污染如何导致安全漏洞

java - Eclipse - Java - 解析 android-23 的数据失败

Eclipse 内置 Maven 支持与 M2Eclipse

java - 在 Java 控制台应用程序中执行 KeyListener