次のように、顧客の名前を含むオブジェクトの配列があります。Customers[]
ボタンを押した後、これらの要素を既存のJListに自動的に追加するにはどうすればよいですか?私はこのようなことを試しました:
for (int i=0;i<Customers.length;i++)
{
jList1.add(Customers[i].getName());
}
しかし、私はいつも間違いを犯します。どうすればそれを解決できますか?私はNetBeansに取り組んでいます。 表示されるエラーは「add(String)に適したメソッドが見つかりません)です。ちなみに、私のメソッドgetNameは顧客の名前を文字列で返しています。
使用している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() );
}
編集:
コードスニペットを調整して、名前をモデルに直接追加しました。これにより、カスタムレンダラーが不要になります
ListModel
自体に直接追加するのではなく、JList
に追加します。現在、リストの内容に影響を与えない add メソッドを使用しています。 DefaultListModel
は変更可能であるため、実行時に更新できます。
宣言:
JList<String> jList1 = new JList<String>(new DefaultListModel<String>());
追加:
((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName());