2010-12-19 19 views
0

arraylistのforループとifループに基づいてJComboboxの値を設定しようとしています。JComboBoxで結果が表示されない

 //salesman=the name of the combobox 
    salesman = new javax.swing.JComboBox(); 

DefaultComboBoxModel model = new DefaultComboBoxModel(); 
salesman.setModel(model); 

/*company is an object of Company class, that gets set with a setter method to ensure 
that the gui will be pointing to the right object. and it does contains the data i want, so 
i am sure that company is not the problem */  
//loop tp set box list 
for (Employee current : company.getArray()){ 

if (current instanceof Salesman) { 
    salesman.addItem(current.getCode()); 
    } 

} 

ですが、コンボボックスは空のままです。何故ですか ?

+0

実際には、* Salesman.getCode()。toString()*がnullを返す場合は、それほど小さくないかもしれません) –

答えて

0

コンボボックスを親コンテナに追加していますか?

セールスマンが存在する限り、上記のコードは正常に動作します。

あなたは会社がオブジェクトではないと確信していますが、あなたが実際にComboBoxModelに追加しているものをチェックしていますか?また、JComboBoxで「無料」のために独自のDefaultcomboBoxModelをインスタンス化する必要はありません。

+0

私は "current"の値を表示するテストメソッドを作成しました。 他のJFrameでそのメソッドを呼び出すと、AddOrder.test()を使用してこのメ​​ソッドが呼び出されます;手動でsalesman.addItem( "blablabla");を追加すると、2つのコード(45,46) – George

0

JComboBoxにテスト文字列を追加するだけで表示されますか?

もしそうなら、.getCode()メソッドで何か問題があるかもしれません。

また、必須ではないため、DefaultComboBoxModelを削除してみてください。

+0

が表示されます; – George

2

とにかく、私は以下のあなたをお勧めしたい:

  1. オーバーライドtoString()をセールスマンクラスの方法が望ましい視覚的な表現を持っている(すなわちコード)。

  2. モデルコンボボックスに管理職ではなく、コードを追加します。

1

モデルにアイテムを直接コンボボックスに追加しないでください。また、barti_dduの推奨事項も使用してください。

0

OK問題が解決しました!私はクラスのコンストラクタに、setCompanyで設定されたCompanyクラスオブジェクトを追加しました。

+0

あなたの問題を解決することができたことはうれしいことですが、これらの回答の1つをあなたの受け入れられた回答としてマークする必要があります。あなたは最も有用だと分かった。 – BoffinbraiN

関連する問題