マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

行ルーラをどうやって表示させるか?

とりあえず、前回はJScrollPaneのRowHeaderを使う方法を試したが、個人的に表示のされかたが気に入らなかったので、エディタコンポーネントのpaintComponentで描画させようかと思う。


それで実際に行ルーラを表示させるとなると、テキストの表示させる位置をずらさなければならない。勿論、表示と非表示を切り替えることができるのが望ましいので、その状況に応じて座標を変換するようなメソッドを作る必要があるかな?と思ったらGraphicsクラスにtranslateというメソッドが用意されていた。これを使えば原点の座標を変更できるらしいので早速使ってみることにした。行ルーラを描画することを前提とした手順は

  1. 行ルーラを描画
  2. translateで行ルーラの幅の分だけX方向に原点をずらす
  3. 今まで通り(変更を加える必要が無い)のテキストの描画

となる。これでJScrollPaneの垂直スクロールバーも行ルーラの下まで表示されてるようになったので満足。ただ、マウスイベントから受け取る座標は自分で変換しないと、クリックした位置とキャレットの位置にずれが生じてしまうので、次の課題になりそう