Swing/DisableScrolling の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/DisableScrolling へ行く。
- Swing/DisableScrolling の差分を削除
---
category: swing
folder: DisableScrolling
title: JScrollPaneのスクロールを禁止
tags: [JScrollPane, JScrollBar]
author: aterai
pubdate: 2005-10-03T10:00:11+09:00
description: JScrollPaneのスクロールを一時的に禁止します。
image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTLM6S99OI/AAAAAAAAAXM/9r2e_2JRA5g/s800/DisableScrolling.png
---
* Summary [#summary]
`JScrollPane`のスクロールを一時的に禁止します。
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTLM6S99OI/AAAAAAAAAXM/9r2e_2JRA5g/s800/DisableScrolling.png)
* Source Code Examples [#sourcecode]
#code(link){{
JCheckBox check = new JCheckBox("Disable Scrolling");
check.addItemListener(new ItemListener() {
@Override public void itemStateChanged(ItemEvent ie) {
table.clearSelection();
JScrollBar bar = scroll.getVerticalScrollBar();
if (ie.getStateChange() == ItemEvent.SELECTED) {
bar.setEnabled(false);
scroll.setWheelScrollingEnabled(false);
table.setEnabled(false);
} else if (ie.getStateChange() == ItemEvent.DESELECTED) {
bar.setEnabled(true);
scroll.setWheelScrollingEnabled(true);
table.setEnabled(true);
}
}
});
}}
* Explanation [#explanation]
- `Disable Scrolling`をチェックして無効状態にする
-- スクロールバーを取得し`JScrollBar#setEnabled(boolean)`メソッドを使用してこれを無効化
-- `JScrollPane#setWheelScrollingEnabled(boolean)`メソッドでマウスホイールによるスクロールを無効化
-- `JScrollPane`に配置したコンポーネントを`setEnabled(false)`とし、フォーカスの移動などによるスクロールを無効化
- `Disable Scrolling`をチェックして無効状態にしても実行可能な操作
-- `JTableHeader`は無効にしていないのでマウスクリックでのソートやドラッグによるカラムの移動が実行可能
-- `JTable`に設定した`JPopupMenu`が表示される
-- `JTable`に設定した`JToolTip`が表示される
* Reference [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JScrollPane.html#setWheelScrollingEnabled-boolean- JScrollPane#setWheelScrollingEnabled(boolean) (Java Platform SE 8)]
- [[JLayerで子コンポーネントへの入力を制限する>Swing/PopupMenuBlockLayer]]
-- `JDK 1.7.0`で追加された`JLayer`を使用して入力を制限する方法もある
-- `JScrollPane`がネストする場合は`JLayer`を使用しないと内外の`JScrollPane`のスクロールを個別に制御できない
- [[JLayerで指定したコンポーネントへの入力を禁止>Swing/DisableInputLayer]]
* Comment [#comment]
#comment
#comment