回答編集履歴

3

誤記訂正

2017/07/06 02:03

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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

訂正

2017/07/06 02:03

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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

誤記訂正

2017/07/05 09:39

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -1,4 +1,4 @@
1
- Model全体を置き換えるのではなくModelの変更(追加・削除など)であれば、元の選択行を削除しない限り、「選択していた行がModelの変更前後でかわらないように自動的に選択位置が補正される」というのがJTable(あるいはJTableのListSelectionModel)振舞と思います。一方Model全体を設定しなおした場合、それ以前に選択していた行は無効になると思います。「以前に選択していた行」と「新たに設定されたモデルの中の同じインデックスのレコード」には何の関係もないと解釈するからだと思います。またその解釈は自分には自然に思えます。
1
+ Model全体を置き換えるのではなくModelの変更(追加・削除など)であれば、元の選択行を削除しない限り、「選択していた行がModelの変更前後でかわらないように自動的に選択位置が補正される」というのがJTable(あるいはJTableのListSelectionModel)振舞と思います。一方Model全体を設定しなおした場合、それ以前に選択していた行は無効になると思います。「以前に選択していた行」と「新たに設定されたモデルの中の同じインデックスのレコード」には何の関係もないと解釈するからだと思います。またその解釈は自分には自然に思えます。
2
2
 
3
3
 
4
4