- PR -

JTableの可視領域の行データ

1
投稿者投稿内容
workingmandead
会議室デビュー日: 2005/01/02
投稿数: 2
投稿日時: 2005-01-02 07:43
今、swingを使用したアプリケーションを組んでます。
JTableで、現在表示中のデータの行の一番上のindexを取得する方法
で悩んでいます。スクロールバーやペインのリサイズなどで、可視領域が
変化しても、常に表示中のデータ行のTOPのINDEXが取得したいのです。

どなたかご存知でしたら、教えていただけないでしょうか。
よろしくお願いいたします。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-01-02 16:42
workingmandeadさん、こんにちは。

bestな方法ではないかも知れませんが、
1.スクロールペインから垂直スクロールバーを取得
2.垂直スクロールバーから値を取得
3.その値を用いて適当な java.awt.Pointのオブジェクトを生成
4.JTable#rowAtPoint() にてロウを取得
っていうのはどうでしょうか?

(使いやすくするためには更に工夫が必要。)

[ メッセージ編集済み 編集者: Kissinger 編集日時 2005-01-02 16:43 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-01-02 17:44
unibon です。こんにちわ。
引用:

Kissingerさんの書き込み (2005-01-02 16:42) より:
(使いやすくするためには更に工夫が必要。)


情報が多いほうが良いかと思い、あまりたいしたことではありませんが、追加で書かせていただきます。
以下、試していませんが、たぶん getVisibleRect で得た値に対して、rowAtPoint するのが一番手近かな、と推測します。
#あと、ある行の一部だけ見えている状態も考慮する必要がありそうですね。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-01-02 18:18
unibonさん、ありがとうございます。

getVisibleRectの方が楽ですね。
引用:

#あと、ある行の一部だけ見えている状態も考慮する必要がありそうですね。


rowHeightが一定なら rowHeight/2分下の座標で rowAtPoint()するとか?
workingmandead
会議室デビュー日: 2005/01/02
投稿数: 2
投稿日時: 2005-01-03 05:22
>Kissinger様
>unibon様
ありがとうございました。
下記コードでうまくいきました。

Point point = new Point();
point.x = table.getVisibleRect().x;
point.y = table.getVisibleRect().y;
System.out.println(table.rowAtPoint(point));
1

スキルアップ/キャリアアップ(JOB@IT)