ベクターからの情報を表示するJListがあります。その後、ユーザーはこのベクターに情報を追加および削除できます。ベクターにアイテムが追加/削除されたときにJFrame内のJListを更新できますか?現在やっています。
list = new JList(names);
jframe.add(new JScrollPane(list), BorderLayout.CENTER);
しかし、これはJListを新しいものに更新しません。チェックしましたが、ベクターのコンテンツなどは変更されますが、リストが更新されません。どうして?どうすれば修正できますか?
ベクターは更新しないでください。 ListModelを直接変更すると、テーブルが自動的に再描画されます。
Vectorが変更されたためにListModelを再作成する場合は、次のようにしてリストを更新します。
list.setModel( theNewModel );
編集:ベクトルを忘れて、データを直接DefaultListModelにロードします。
DefaultListModel model = new DefaultListModel();
model.addElement( "one" );
model.addElement( "two" );
JList list = new JList( model );
ここで、データを変更する必要があるときはいつでも、addElement()、removeElement()、またはset()メソッドを使用してモデルを直接更新します。リストは自動的に再描画されます。
ベクトルを変更した後、JlistでpdateUIを呼び出します。
Jlistのグラフィック「refresh」の解決策を見つけたと思います。 Jlistが保持するモデルの要素を追加または削除するたびに、このメソッドを呼び出してみてください。
Jlist_name.ensureIndexIsVisible(model_name.getSize());
ベクトルが変化するたびにlist.setListData(vector)を使用できます