Swing/DetectScrollToBottom のバックアップソース(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/DetectScrollToBottom へ行く。
- 1 (2014-10-02 (木) 19:48:07)
- 2 (2015-02-12 (木) 15:49:27)
- 3 (2016-05-27 (金) 13:09:24)
- 4 (2017-04-07 (金) 13:51:51)
- 5 (2017-07-31 (月) 20:36:54)
- 6 (2018-02-24 (土) 19:51:30)
- 7 (2018-07-31 (火) 14:00:05)
- 8 (2020-07-25 (土) 03:48:53)
- 9 (2021-12-17 (金) 11:59:01)
- 10 (2024-01-10 (水) 11:19:33)
- 11 (2025-01-03 (金) 08:57:02)
- 12 (2025-01-03 (金) 09:01:23)
- 13 (2025-01-03 (金) 09:02:38)
- 14 (2025-01-03 (金) 09:03:21)
- 15 (2025-01-03 (金) 09:04:02)
- 16 (2025-06-19 (木) 12:41:37)
- 17 (2025-06-19 (木) 12:43:47)
--- title: JScrollBarが最後までスクロールしたことを確認する tags: [JScrollBar, JScrollPane, ChangeListener] author: aterai pubdate: 2013-03-04T10:01:01+09:00 description: JScrollBarが最後までスクロールしたかどうかを確認します。 --- * 概要 [#q2d91bdc] `JScrollBar`が最後までスクロールしたかどうかを確認します。 #download(https://lh5.googleusercontent.com/-OoIPVjne_9M/UTPo6KgN_NI/AAAAAAAABlw/7miro8ywcyg/s800/DetectScrollToBottom.png) * サンプルコード [#p3b9d209] #code(link){{ 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); } } }); }} * 解説 [#f9d1a4d8] 上記のサンプルでは、縦`JScrollBar`から取得した`BoundedRangeModel`に`ChangeListener`を追加し、ノブの幅を加えた値が最大値になった時に最後までスクロールしたと判断して、`JCheckBox`を有効に設定しています。 * 参考リンク [#j64d551e] - [http://stackoverflow.com/questions/12916192/how-to-know-if-a-jscrollbar-has-reached-the-bottom-of-the-jscrollpane java - How to know if a JScrollBar has reached the bottom of the JScrollPane? - Stack Overflow] -- `JScrollBar`に`AdjustmentListener`を設定する方法と、`BoundedRangeModel`に`ChangeListener`を設定する方法が回答されています。 - [[JScrollBarをJSliderとして使用する>Swing/ScrollBarAsSlider]] * コメント [#w83cfd99] #comment #comment