Swing/BoundedRangeModel のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/BoundedRangeModel へ行く。
- category: swing folder: BoundedRangeModel title: JLabelとIconで作成した検索位置表示バーをマウスで操作する tags: [JLabel, Icon, BoundedRangeModel, JScrollBar, JTable] author: aterai pubdate: 2014-02-17T02:41:10+09:00 description: JScrollBarからBoundedRangeModelを取得し、JLabelとIconで表示した検索位置表示バーをマウスで操作可能にします。 image:
概要
JScrollBar
からBoundedRangeModel
を取得し、JLabel
とIcon
で表示した検索位置表示バーをマウスで操作可能にします。
Screenshot
Advertisement
サンプルコード
class HighlightBarHandler extends MouseAdapter {
private void processMouseEvent(MouseEvent e) {
Point pt = e.getPoint();
Component c = e.getComponent();
BoundedRangeModel m = scrollbar.getModel();
int h = m.getMaximum() - m.getMinimum();
int iv = (int) (.5 - m.getExtent() * .5 + pt.y * h / (double) c.getHeight());
m.setValue(iv);
}
@Override public void mousePressed(MouseEvent e) {
processMouseEvent(e);
}
@Override public void mouseDragged(MouseEvent e) {
processMouseEvent(e);
}
}
View in GitHub: Java, Kotlin解説
Icon
に検索結果をハイライト表示し、JLabel
に設定- この
JLabel
はJScrollPane
の子コンポーネントではないので、縦JScrollBar
のBoundedRangeModel
にChangeListener
を追加し、更新ごとにJLabel#repaint()
もあわせて実行する必要がある
- この
JLabel
上の表示範囲をマウスで操作可能にするため、MouseListener
などを追加- 位置は
JScrollBar
からBoundedRangeModel
を取得して計算する
- 位置は