質問

私は持っています JTable (拡張) と実装 TableModel, 、私はメソッドを持っています...

  • moveEntryUp(int rowIdx)
  • moveEntryDown(int rowIdx)

...テーブルモデルの実装内で。これらが正しく動作することを確認しました。

ただし、テーブルモデルで行われた変更を実際のモデルに反映させるのに問題があります。 JTable. 。このテーブルでは、単一行の選択のみを許可し、個別のボタンを使用しています。 そして . 。行が選択されたら、その行を上下に移動できる必要があります。 そして 選択範囲を保存します。

例えば。
私の行が [A, B, C(selected)], 、上ボタンを押すと、
手に入れるべきです [A, C(selected), B].

これまでに試したさまざまなアプローチでは、JTable 内の値の更新に失敗するか、選択が失われます。


注記:
を明示的に呼び出す必要があるソリューションを使用することをためらっています。 repaint().
内のすべてのセルが JTableない 編集可能。

役に立ちましたか?

解決

自分の質問に答えます

int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);

どこmTableはJTableのある、そしてmTableModelは私のテーブルモデルの実装である、とmTable.getModel()(および型キャスト)に相当します。

尋ねる前に、周りの長いつついてきたはず!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top