Swing/DisableScrolling のバックアップの現在との差分(No.3)
JScrollPaneのスクロールを禁止
編集者:Terai Atsuhiro~
作成日:2005-10-03
更新日:2025-02-16 (日) 16:04:34
Summary
JScrollPane
のスクロールを一時的に禁止します。
Screenshot

Advertisement
概要
JScrollPaneのスクロールを一時的に禁止します。Source Code Examples
#spanend
#spanadd
JCheckBox check = new JCheckBox("Disable Scrolling");
#spanend
#spanadd
check.addItemListener(new ItemListener() {
#spanend
@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);
}
}
#spanadd
});
#spanend
#spanadd
View in GitHub: Java, Kotlin
Description
-
Disable Scrolling
をチェックして無効状態にする- スクロールバーを取得し
JScrollBar#setEnabled(boolean)
メソッドを使用してこれを無効化 -
JScrollPane#setWheelScrollingEnabled(boolean)
メソッドでマウスホイールによるスクロールを無効化 -
JScrollPane
に配置したコンポーネントをsetEnabled(false)
とし、フォーカスの移動などによるスクロールを無効化
- スクロールバーを取得し
-
Disable Scrolling
をチェックして無効状態にしても実行可能な操作-
JTableHeader
は無効にしていないのでマウスクリックでのソートやドラッグによるカラムの移動が実行可能 -
JTable
に設定したJPopupMenu
が表示される -
JTable
に設定したJToolTip
が表示される
-
サンプルコード
JCheckBox b = new JCheckBox("スクロールを禁止する"); b.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent ie) { JCheckBox box = (JCheckBox)ie.getSource(); boolean flag = !box.isSelected(); JScrollBar bar = scrollPane.getVerticalScrollBar(); bar.setEnabled(flag); scrollPane.setWheelScrollingEnabled(flag); table.setEnabled(flag); } });
Reference
- JScrollPane#setWheelScrollingEnabled(boolean) (Java Platform SE 8)
- JLayerで子コンポーネントへの入力を制限する
-
JDK 1.7.0
で追加されたJLayer
を使用して入力を制限する方法もある -
JScrollPane
がネストする場合はJLayer
を使用しないと内外のJScrollPane
のスクロールを個別に制御できない
-
- JLayerで指定したコンポーネントへの入力を禁止