JScrollPaneのオートスクロール

編集者:Terai Atsuhiro
作成日:2004-11-22
更新日:2023-07-15 (土) 22:14:03

概要

JScrollPane上のマウスポインタに応じてラベルをオートスクロールします。

http://terai.xrea.jp/swing/autoscroll/screenshot.png

サンプルコード

private void autoScroll(Point ptLabel) {
  Point ptScroll = SwingUtilities.convertPoint(label, ptLabel, scroll);
  int iv = (int) scroll.getPreferredSize().getHeight();
  if(ptScroll.y < iv/2) {
    rect.setRect(0, ptLabel.y-ptScroll.y-SCROLL, 0, SCROLL);
    flg = true;
  }else{
    rect.setRect(0, ptLabel.y-ptScroll.y+iv+SCROLL, 0, SCROLL);
    flg = false;
  }
  scroller.start();
}

解説

マウスポインタの位置に応じて、上下方向にのみ一定速度で自動スクロールします。SwingUtilities.convertPoint()メソッドを使って座標の変換を行っています。

JTextPaneで文字列を挿入したときに、最後まで自動スクロールしたい場合は、JTextPaneで最終行に移動を参考にしてください。

参考リンク

コメント