Java の GUI アプリケーションで忙しいので、値が jList に追加されたときに IndexOutOfBoundsExceptions が発生することがあります。
値が選択されてから別の値が追加されると、例外が発生するようです。ユーザーがインデックスを選択したときに何かが発生する必要があるため、選択変更のリスナーがありますが、このイベントは新しい値が追加されたときにも発生します。必要なメソッドを完全に有効な方法でListModel
拡張およびオーバーライドするカスタムを使用します。AbstractListModel
- 値がリストに追加されると、プログラムで選択が変わるのはなぜですか? これは視覚的に表現されていません。
- jList で、実際には存在しないインデックスを選択できるのはなぜですか?
私は jList を 2 回使用しました (最近、学校で GUI を使い始めました) が、どちらも問題がありました。値が追加される前に選択をクリアすることで初めて解決しましたが、それは本当に良い解決策ではありません。これは必要ないと思います。
なぜこれが発生するのかわかりません。奇妙なコードなどはありません。疑似コードでは、次のようになります。
listmodel.addValue(object);
listmodel.fireIntervalAdded();
//selection event occurs
selectedObject = listmodel.getValueAt(list.getSelectedIndex()); //indexoutofboundsexception
//index = 5, size = 3 (for example) when there are 2 objects in list and first is selected.
あまり関係がないと思うので、今は追加のコードを提供していません。jList、そのリストモデル、およびその選択モデルがどのように機能するかを完全に理解している人なら、何が問題なのかを理解できると思います。これに関するヘルプをいただければ幸いです。