JScrollBarが最後までスクロールしたことを確認する
Total: 5241
, Today: 2
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
JScrollBar
が最後までスクロールしたかどうかを確認します。
Screenshot
Advertisement
サンプルコード
JScrollPane scroll = new JScrollPane(c);
scroll.getVerticalScrollBar().getModel().addChangeListener(e -> {
BoundedRangeModel m = (BoundedRangeModel) e.getSource();
int extent = m.getExtent();
int maximum = m.getMaximum();
int value = m.getValue();
if (value + extent >= maximum) {
check.setEnabled(true);
}
});
}
});
View in GitHub: Java, Kotlin解説
- 縦
JScrollBar
から取得したBoundedRangeModel
にChangeListener
を追加 - この
ChangeListener
でノブの幅を加えた値が最大値になった時に最後までスクロールしたと判断して対応するJCheckBox
を有効に設定
参考リンク
- java - How to know if a JScrollBar has reached the bottom of the JScrollPane? - Stack Overflow
JScrollBar
にAdjustmentListener
を設定する方法と、BoundedRangeModel
にChangeListener
を設定する方法が回答されている
- JScrollBarをJSliderとして使用する
- JScrollPaneの範囲外へのマウスドラッグによるスクロールで半透明の楕円を描画する
- こちらでは
JScrollBar
ではなく、JViewport#getView()#getSize()#height == JViewport#getViewRect()#y + JViewport#getViewRect()#height
とJViewport
で最後までスクロールしたかを確認している
- こちらでは