2012-01-24 7 views
3

私はJEditorPaneをHTMLドキュメントに表示しています。そして、クリックするたびに次のビューポートにスクロールするボタンを作成しました。JScrollBarがラインヘッドにスクロールするようにします

ただし、ビューポートの上部にある行の一部が表示されることがあるので、JScrollBarを先にスクロールさせる方法はありますか?

私はsetBlockIncrement()メンバーメソッドを試しましたが、全く機能しませんでした。

ここにあなたが私の最高の試みです:

//get the visible rectangle as well as the most bottom right point. 
Rectangle rec = jEditorPane1.getVisibleRect(); 
Point pt = new Point((int)rec.getX() +(int)rec.getWidth(),(int)rec.getY() +  (int)rec.getHeight()); 
// get the offset of the most bottom right point 
int off = jEditorPane1.viewToModel(pt); 
try { 
//get next viewable rectangle and scroll to it 
rec = jEditorPane1.modelToView(off+100); 
rec.height = jEditorPane1.getVisibleRect().height; 
jEditorPane1.scrollRectToVisible(rec); 
} catch (BadLocationException ex) { 
Logger.getLogger(NewJFrame2.class.getName()).log(Level.SEVERE, null, ex); 
} 
+0

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

BTW - ラインに画像が埋め込まれ、画像の高さがビューポートの視認可能な高さよりも大きければどうなるでしょうか? –

+0

返信いただきありがとうございます。ビューポートはフルスクリーンで、カスタマイズされたepubファイルを編集しています。しかしながら;あなたが記述したような画像がある場合、唯一のことは、長い線でも画像でもビューポートを開始することです。 – muaz

答えて

4

はあなたが表示したいドキュメント内の位置を持っていると思います。 modelToView()メソッドを使用して、位置の可視の矩形を取得できます。 y位置を使用してビューポートを設定します。例えば。 scrollRectToVisibleは、rectangleパラメータでyとビューポートの高さを渡します。

+0

ありがとう、私はすでにmodelToView()とscrollRectToVisible()メソッドを使用していますが、私の状況では、フォントがリサイズ可能で、時にはビューポートの下部に表示される行の一部がずれています。ビューポートこの行の部分は再びビューポートの上部に表示されますか? – muaz

+0

私はそう思います。キャレットrect height =行の高さで、行内でどのフォントが使用されているかにかかわらず。 – StanislavL

関連する問題