Sample : コンボボックスのリストに同じ値を設定する場合

実装サンプル : あり

Webtribe/VisualFrameでは、JavaのJComboBoxというクラスを継承したクラスを利用しておりますが、 JComboBoxの制限として同じString文字列を設定したときに処理ができないという問題があります。
https://docs.oracle.com/javase/jp/6/api/javax/swing/JComboBox.html#addItem(java.lang.Object)

この問題はVisualFrameのDefaultComboBoxでも発生いたします。




上記画像の状態で、4番目の項目を選択したときに、1番目のBOXKEYの値がコンボボックスのTEXTアイテムに設定されます。


コンボボックスの選択状態も1番目に変わります。

こちらの問題を解決するため、コンボボックス内部のModelを変更するためのロジッククラスのサンプルを作成します。

1.重複データ対応のコンボボックスモデルを作成する
2.コンボボックスモデルを入れ替えるロジッククラスを作成する
3.実装したロジッククラスを実行する

重複データ対応のコンボボックスモデルを作成する↑top

製品標準のWedgeComboBoxModelを拡張する形で実装を行います。 元々Stringのデータをそのまま利用するように実装されていますが、オーバライドをして、ObjectRepを返すようにします。

コンボボックスモデルを入れ替えるロジッククラスを作成する↑top

作成したコンボボックスモデルは、各画面でロジッククラスを用いて設定する必要があります。

実装したロジッククラスを実行する↑top

実装した SetObjectRepComboBoxModel を各CMACで設定していきます。

  1. ObjectRepComboBoxModelと、SetObjectRepComboBoxModelのクラスは、コンパイルし RunClient起動時のクラスパスに設定します。
  2. CAMCのLoadイベントで、SetObjectRepComboBoxModelを呼び出して、コンボボックスのモデルを入れ替えていきます。

上記で設定は完了です。
RunClientを再起動して反映されているかどうかを確認してください。

以下のように重複しているデータの二件目を選択することができるようになります。

Valid XHTML 1.1