JLabelとIconで作成した検索位置表示バーをマウスで操作する
Total: 4339, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JScrollBarからBoundedRangeModelを取得し、JLabelとIconで表示した検索位置表示バーをマウスで操作可能にします。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
Iconに検索結果をハイライト表示しJLabel#setIcon(...)で設定- この
JLabelはJScrollPaneの子コンポーネントではないので縦JScrollBarのBoundedRangeModelにChangeListenerを追加して更新ごとにJLabel#repaint()を実行して再描画する必要がある
- この
JLabel上の表示範囲をマウスで操作可能にするためMouseListenerなどを追加- 位置は
JScrollBarからBoundedRangeModelを取得して計算する
- 位置は