• category: swing folder: DetectScrollToBottom title: JScrollBarが最後までスクロールしたことを確認する tags: [JScrollBar, JScrollPane, ChangeListener] author: aterai pubdate: 2013-03-04T10:01:01+09:00 description: JScrollBarが最後までスクロールしたかどうかを確認します。 image: https://lh5.googleusercontent.com/-OoIPVjne_9M/UTPo6KgN_NI/AAAAAAAABlw/7miro8ywcyg/s800/DetectScrollToBottom.png hreflang:
       href: https://java-swing-tips.blogspot.com/2017/07/detects-that-it-has-reached-bottom-of.html
       lang: en

概要

JScrollBarが最後までスクロールしたかどうかを確認します。

サンプルコード

JScrollPane scroll = new JScrollPane(c);
scroll.getVerticalScrollBar().getModel().addChangeListener(new ChangeListener() {
  @Override public void stateChanged(ChangeEvent 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から取得したBoundedRangeModelChangeListenerを追加し、ノブの幅を加えた値が最大値になった時に最後までスクロールしたと判断して、対応するJCheckBoxを有効に設定しています。

参考リンク

コメント