3

JListから要素を削除する際に問題があります。私のアプリケーションはクライアントサーバーアプリケーションであり、クライアントにはJList(ビュー)があります。サーバーには、JListの実際のデータがベクトル形式で含まれています。クライアントで特定のアクションが発生すると、サーバーはベクターから要素を削除してから、クライアントのビューを更新する必要があります。サーバーから削除した後にベクターを取得し、新しいJListを作成してビューに設定しようとしましたが、更新が行われません。

それを行うためのいくつかの可能な方法は何ですか?

注:私は次のようなDefaultListModelを使用しました:

DefaultListModel model=(DefaultListModel)myList.getModel();
model.removeElement(myElement);
myList.setModel(model);

しかし、それは実行時にClassCastExceptionを与えます、それはそれを言いますjavax.swing.JList cannot be cast to javax.swing.DefaultListModel

4

1 に答える 1

2

Vectorコンストラクターに要素を渡すか、メソッドを使用するだけでリストに要素を追加できますが、setListDataそれは最善の方法ではありません。

ListModel通常、のような実装を使用することをお勧めしますDefaultListModel。データを処理するためのメソッドを定義します(、、addElement... removeElement)。

削除された要素のみをサーバーに照会し、すべてのデータを取得しないことで、サーバーとクライアント間で交換されるデータの量を減らすことができます。

更新:モデルを使用しているようです。JListモデルのデフォルトの実装はタイプではありませんDefaultListModelJList最初にインスタンス化するときに、コンストラクターでモデルを設定できますJList

DefaultListModel model = new DefaultListModel();
JList list = new JList(model);

再度インスタンス化しないでください。一度だけインスタンス化する必要があります。setModel()次に、投稿したコードを使用できますが、要素を削除した後にメソッドを呼び出す必要はありません。

于 2013-01-26T19:32:18.457 に答える