web-dev-qa-db-ja.com

JListへの要素の追加

次のように、顧客の名前を含むオブジェクトの配列があります。Customers[]

ボタンを押した後、これらの要素を既存のJListに自動的に追加するにはどうすればよいですか?私はこのようなことを試しました:

for (int i=0;i<Customers.length;i++)
{
    jList1.add(Customers[i].getName());
}

しかし、私はいつも間違いを犯します。どうすればそれを解決できますか?私はNetBeansに取り組んでいます。 表示されるエラーは「add(String)に適したメソッドが見つかりません)です。ちなみに、私のメソッドgetNameは顧客の名前を文字列で返しています。

4
Little

使用しているaddメソッドはContainer#addメソッドなので、確かに必要なものではありません。 ListModelを変更する必要があります。例:.

DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>( model );

for ( int i = 0; i < customers.length; i++ ){
  model.addElement( customers[i].getName() );
}

編集:

コードスニペットを調整して、名前をモデルに直接追加しました。これにより、カスタムレンダラーが不要になります

7
Robin

ListModel自体に直接追加するのではなく、JListに追加します。現在、リストの内容に影響を与えない add メソッドを使用しています。 DefaultListModelは変更可能であるため、実行時に更新できます。

宣言:

JList<String> jList1 = new JList<String>(new DefaultListModel<String>());

追加:

((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName());
1
Reimeus