TITLE:JScrollPaneのスクロールを禁止

JScrollPaneのスクロールを禁止

編集者:Terai Atsuhiro~

作成日:2005-10-03
更新日:2021-08-06 (金) 19:02:43
  • 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

概要

JScrollPaneのスクロールを一時的に禁止します。

概要

JScrollPaneのスクロールを一時的に禁止します。

サンプルコード

#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

#screenshot

解説

  • Disable Scrollingをチェックして無効状態にする
    • スクロールバーを取得しJScrollBar#setEnabled(boolean)メソッドを使用してこれを無効化
    • JScrollPane#setWheelScrollingEnabled(boolean)メソッドでマウスホイールによるスクロールを無効化
    • JScrollPaneに配置したコンポーネントをsetEnabled(false)とし、フォーカスの移動などによるスクロールを無効化
  • Disable Scrollingをチェックして無効状態にしても実行可能な操作
    • JTableHeaderは無効にしていないのでマウスクリックでのソートやドラッグによるカラムの移動が実行可能
    • JTableに設定したJPopupMenuが表示される
    • JTableに設定したJToolTipが表示される

サンプルコード

#spanend
 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);
   }
 });
#spandel
  • &jnlp;
  • &jar;
  • &zip;

参考リンク

解説

  • スクロールバーを取得し、JScrollBar#setEnabled(boolean)メソッドを使って、これを無効にします。
  • JScrollPane#setWheelScrollingEnabled(boolean)メソッドで、マウスホイールによるスクロールを無効にします。
  • JScrollPaneに配置したコンポーネントをsetEnabled(false)とし、フォーカスの移動などによるスクロールを無効にします。

コメント

コメント