したがって、DefaultListModelを使用してJListを更新しようとしています。今私はオンラインの例を見て、モデルを更新する機能を作った。私が直面している問題は、updateUI()メソッドを呼び出した後でも、モデルが更新されていてUIは更新されていないことです。ここに私のコードです。JListの更新UI
public void updateAthleteList() {
System.out.println("Trying to update");
//call updateUI() for the JList object
athletesModel.clear();
System.out.println(athleteList.size());
for(int i = 0; i < athleteList.size(); i++) {
System.out.println("Inside loop");
athletesModel.addElement(((Athlete) athleteList.get(i)).toStringCount());
}
athletesList.updateUI();
System.out.println(athletesModel.size());
System.out.println(athletesList.getModel().getSize());
}
出力行は、デバッグするためだけのものでした。助けを得ることができたら本当に感謝しています。前もって感謝します。
UPDATE
私は単純な文字列で、この時間を働いていると私は大きさが、JListの中に、まだ全く変化をプリントアウトしてモデルが更新されています。ここにコードです
public void updateAthleteList(Athlete newAthlete)
{
System.out.println("Trying to update");
//call updateUI() for the JList object
DefaultListModel tempModel = (DefaultListModel)athletesList.getModel();
tempModel.addElement("hij");
System.out.println(athletesList.getModel().getSize());
athletesList.setModel(tempModel);
athletesList.updateUI();
System.out.println(athletesList.getModel().getSize());
}
のための彼の後のupdateUI()メソッドを呼び出すための任意の必要はあり決してありません。モデルを更新するだけです。 JListが更新されない場合は、1)モデルがフレームに表示されているJListに属していないか、2)Event Dispatch Threadでモデルを更新していないかのいずれかです。問題はあなたが投稿しないコードにあります。問題を示す適切な[SSCCE](http://sscce.org/)を投稿してください。つまり、JListとアクションリスナーを含むボタンを使用して簡単なGUIを作成し、モデルに項目を追加します。簡単なコードが動作することを証明して、実際のプログラムを修正してください。 – camickr
私はそれを試みますが、どこかでVectorを直接更新するのではなく、モデルを更新するべきであると読んでいます。私がやっていることは、あるパネルからベクトルを更新して、それをモデルを更新している別のパネルに渡していることです。それが問題なのでしょうか? – anonymousCoder
はい、モデルを更新する必要があります。あなたは 'SSCCE'を投稿していないので、これ以上の提案はできません。 – camickr