2011-11-12 5 views
2

JTreeTableを持つJScrollPaneがあります。通常、私のJTableには多くのアイテムが含まれています。アプリは、ツリーテーブル内の特定の行にフォーカスを合わせ、スクロールする必要があります。 Iフォーカス設定するために、次の推奨コードを使用しています:新たに選択された行が現在表示される行を下回っている場合にのみ動作するいくつかの理由JTableが上にスクロールしない

table.scrollRectToVisible(table.getCellRect(rowIndex, vColIndex, true)); 

を。しかし、プログラムが現在の可視行の上にある不可視行を選択するよう要求すると、その行はまったくその行にスクロールしません。 私はこの問題についてたくさんの調査をしましたが、まだ解決策は見つかりませんでした。誰かがその問題を解決する方法を考えていますか? ありがとうございます。

+0

あなたの技術的な語彙ハーフウェイが正しい取得してみてください:focus(別名:テーブルコンテキストのリード選択インデックス)は、行の可視性とは関係ありません。スクロールは両方向で動作するはずです。だから、あなたが表示していないコードに間違ったことがあります。@ camickrが既に提案しているように、時間は1秒です。 – kleopatra

+0

同じです。最初は 'table.changeSelection'を使っていましたが、' table.scrollRectToVisible'に変更しました。どちらの場合も、記述された動作が得られます。 – Gustavo

答えて

3

scrollRectToVisible()メソッドは、ビューポートで矩形が表示されるようにします。 Rectangleをビューポートと同じサイズにして、開始点が表示されていてもスクロールを強制できると思います。

より簡単なアプローチを使用することです:

scrollPane.getViewport().setViewPosition(...); 
+0

それは動作しますか?あなたのアプローチを使用してnumber = iの行にフォーカスを設定する方法をサンプルコードで指定できますか? – palcan

+0

scrollRectToVisible()コードを上記の1行のコードに置き換えることができます。問題がある場合は、問題を示す[SSCCE](http://www.sscce.org)を投稿してください。 – camickr

+0

はお勧めしません - とにかく、あなたはviewPositionを計算する必要があるので、これは一本のライナーではありません。 – kleopatra

2

をスクロールアップ処理するための条件に、次の回避策は、私の仕事:

table.scrollRectToVisible(table.getCellRect(0, 0, true)); 
table.scrollRectToVisible(table.getCellRect(rowIndex, vColIndex, true)); 
+0

醜い。しかし、私のために働いた。 – Gustavo

関連する問題