Jtable と dataModel に問題があります。私のテーブル モデルは AbstracttableModel を拡張し、データは Vector に格納されます。私は、1つ以上の行を削除すると思われる関数を持っています。私のjtableがselectionModeを次のように設定しているため、これらの行は必ずしも連続しているわけではありません。
jTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
行を削除する関数 (1 つずつ):
public void removeMessageRow(Integer p_idMessage) {
Enumeration<MlMessage> alldatas = vData.elements();
while (alldatas.hasMoreElements()) {
MlMessage m = alldatas.nextElement();
if (m.getIdMessage() == p_idMessage) {
int idx = vData.indexOf(m);
boolean result = vData.remove(m);
// fireTableDataChanged();
// fireTableRowsDeleted(idx, idx);
fireTableStructureChanged();
return;
}
}
関数を起動すると、問題なくループが実行されます。ステップバイステップ モードでは、vData オブジェクトが更新されていることがわかります。これを 1 回だけ実行すると、GUI に問題はありません。複数の行を選択すると問題が発生します。たとえば、テーブルで行番号 0 と番号 1 を選択し、removeMessageRow 関数を起動すると、最初の実行時に vDataObject が正しく更新されます (すべてのデータがシフトされ、このベクトルの最後の要素がによって null に設定されます)。に呼び出しますvData.remove(m)
. したがって、私の場合、2回目の実行では、検索するオブジェクトは位置0にあるはずですが、更新されていないため、vDataオブジェクトとして位置1にあると予想しています。誰かがそれについて考えを持っていますか? 私は多くのことを試しました... ものですが、すぐに実行できる人はいません。前もって助けてくれてありがとう、私のシェイクスピアの言葉でごめんなさい。