1

JTable があり、その JTable に行を動的に挿入しています。ユーザーの介入の後、新しい行が挿入されます。次に、選択された行番号としてパラメーターを使用して関数を呼び出し、その関数内に、それに応じて同じ行を更新するコードがあります。行の挿入と行の値の更新の各コードは、個別のスレッドで実行されます。

public void updateRow(int row,JTable myTable)
{
  String text = "";
 //After lot of processing, setting the table cell value at the 'row' on the 4th column
  myTable.setValueAt(text, row, 4);
}

私が直面している問題は次のとおりです。

ユーザーが行を削除すると、行の位置が変更され、その時点で関数updateRow()が他の行を更新しようとすると、行数の変更のために失敗します。

一度に 3 行あり、各行の updateRow が進行中であるとしましょう。

updateRow(0,userTable);//For the 1st row
updateRow(1,userTable);//For the 2nd row
updateRow(2,userTable);//For the 3rd row

2 行目の updateRow() が完了したとします。これにより、3 行目の updateRow() 関数で問題が発生します。行の値が '2' であるためです。3行目が削除されたため、3行目がなくなり、次のコードが失敗します

myTable.setValueAt(text, row, 4);//Currently, row has the value as '2'

行の位置が動的に変更された場合でも、行の値を使用して行の更新を追跡する方法を誰かが提案できますか?

前もって感謝します。

4

1 に答える 1

2

ビューの行番号に依存する代わりに、@mKorbel のコメントで提案されているように、モデルを直接操作してください。モデルを変更すると、ビューが追従します。ここで説明したように、"は、モデル座標からビュー座標に変換するメソッドと、ビュー座標からモデル座標にJTable変換するメソッドを提供します。convertColumnIndexToViewconvertRowIndexToViewconvertColumnIndexToModelconvertRowIndexToModel

于 2013-03-21T09:32:07.453 に答える