0

私は2つのJComboBoxがお互いの選択したアイテムを設定しなければならないプログラムに取り組んでいます。オブジェクト名wheelsTypeComboとcarBrandComboを吹き替えてみましょう。どちらのモデルにも、データベースから取得したオブジェクトのリスト(最初のリストのタイプ1のオブジェクトと2番目のリストのタイプ2のオブジェクト)と、対応するタイプの特別なwheelsTypeShowAllとそれぞれcarBrandShowAllが含まれています。最後の2つのアイテムのいずれかを選択すると、両方のJComboBoxに含まれるすべてのアイテム(2つの特別なアイテム)が表示されます。

JComboBoxesの相互関係のルールは次のとおりです。

  1. WheelsTypeComboからアイテムを選択すると、carBrandComboには、それらのタイプのタイヤとcarBrandShowAllアイテムのみを使用するすべての車のブランドがリロードされます。
  2. carBrandShowAllアイテムがcarBrandComboの最初のシチュエーション状態から選択されると、carBrandComboはデータベースからの対応するすべてのアイテムでリロードされ、wheelsTypeComboにも選択されたアイテムwheelsTypeShowAllがあります。
  3. carBrandComboからアイテムを選択すると、対応するホイールタイプアイテムがwheelsTypeComboで選択されます。
  4. すでに対応する関係にあるアイテムが選択されている場合、どちらのJComboBoxでもsetSelectedItemアクションは必要ありません。

一時的に、JComboBoxesをインターフェイスに追加するときに、匿名のItemListenerクラスを使用しようとしましたが、おそらくメソッド呼び出しの呼び出しによって引き起こされるスタックとnullポインター例外のオーバーフローと戦っていました。

あらゆるレベルでの合理的な改善をいただければ幸いです。

4

1 に答える 1

1

これを行う場合、carBrand と wheelType という 2 つのカスタム クラスを作成し、関連する独自の内部アイテム リストを返す 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();

次に、comboBox コードでホイールとブランドのリストを保持し、Listmodel を次の結果で更新します。

getSelected().getBrands()

また

getSelected().getWheels().

また、 getAllBrands() または「すべて」オプションを選択したときに何かを静的に呼び出すこともできます。

それぞれのマップを作成するなど、おそらく「より簡単な」方法がありますが、これが最も「明確な」方法だと思います。

于 2012-06-27T19:59:21.893 に答える