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を変更するためのロジッククラスのサンプルを作成します。
重複データ対応のコンボボックスモデルを作成する↑top
製品標準のWedgeComboBoxModelを拡張する形で実装を行います。 元々Stringのデータをそのまま利用するように実装されていますが、オーバライドをして、ObjectRepを返すようにします。
コンボボックスモデルを入れ替えるロジッククラスを作成する↑top
作成したコンボボックスモデルは、各画面でロジッククラスを用いて設定する必要があります。
実装したロジッククラスを実行する↑top
実装した SetObjectRepComboBoxModel を各CMACで設定していきます。
- ObjectRepComboBoxModelと、SetObjectRepComboBoxModelのクラスは、コンパイルし RunClient起動時のクラスパスに設定します。
- CAMCのLoadイベントで、SetObjectRepComboBoxModelを呼び出して、コンボボックスのモデルを入れ替えていきます。
上記で設定は完了です。
RunClientを再起動して反映されているかどうかを確認してください。
以下のように重複しているデータの二件目を選択することができるようになります。