回答編集履歴
3
誤記訂正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
「行が選択された際の振る舞い」をMouseListener(MouseClicked)で行おうとしているように見えます。何に対してのMouseClickedなのか、そのハンドラーで「選択状態でないにもかかわらずなぜTableModel#getValueAtを呼び出そうとしているのか
|
23
|
+
「行が選択された際の振る舞い」をMouseListener(MouseClicked)で行おうとしているように見えます。何に対してのMouseClickedなのか、そのハンドラーで「選択状態でないにもかかわらずなぜTableModel#getValueAtを呼び出そうとしているのか」コードがないので不明ですが、やはりそのあたりに問題があるように思えます。
|
24
24
|
|
25
25
|
|
26
26
|
|
2
訂正
test
CHANGED
@@ -3,3 +3,25 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
もしModel全体を置き換え、かつユーザー操作なしに最初から特定の行を選択状態にしたいなら、アプリケーション固有の判断に従って「新たに設定したModelのどの行を選択状態にしたいのか」をJTableへ教えてやる必要があると思います。具体的にはModelを設定した直後にJTableのListSelectionModelオブジェクトに対してsetSelectionIntervalメソッドなどを用いればよいでしょう。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
訂正:上記回答は質問者さんの問題とはずれた内容だったようです。追加された情報に基づき改めてコメントします。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
> javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:648)
|
18
|
+
|
19
|
+
at パッケージ名.クラス名.mouseClicked(クラス名.java:496)
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
「行が選択された際の振る舞い」をMouseListener(MouseClicked)で行おうとしているように見えます。何に対してのMouseClickedなのか、そのハンドラーで「選択状態でないにもかかわらずなぜTableModel#getValueAtを呼び出そうとしているのか、コードがないので不明ですが、やはりそのあたりに問題があるように思えます。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
ところで、選択状態の変化を捉える目的ならMouseClickedではなくListSelectionListenerを使うべきと思います。
|
1
誤記訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Model全体を置き換えるのではなくModelの変更(追加・削除など)であれば、元の選択行を削除しない限り、「選択していた行がModelの変更前後でかわらないように自動的に選択位置が補正される」というのがJTable(あるいはJTableのListSelectionModel)
|
1
|
+
Model全体を置き換えるのではなくModelの変更(追加・削除など)であれば、元の選択行を削除しない限り、「選択していた行がModelの変更前後でかわらないように自動的に選択位置が補正される」というのがJTable(あるいはJTableのListSelectionModel)の振舞いと思います。一方Model全体を設定しなおした場合、それ以前に選択していた行は無効になると思います。「以前に選択していた行」と「新たに設定されたモデルの中の同じインデックスのレコード」には何の関係もないと解釈するからだと思います。またその解釈は自分には自然に思えます。
|
2
2
|
|
3
3
|
|
4
4
|
|