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

Posted by at 2005-10-03

JScrollPaneのスクロールを禁止

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

  • &jnlp;
  • &jar;
  • &zip;
DisableScrolling.png

サンプルコード

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);
  }
});
View in GitHub: Java, Kotlin

解説

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

  • このサンプルでは、`Disable Scrolling`をチェックして無効状態にしても
    • `JTableHeader`は無効にしていないので、クリックしてソートや、カラムの移動を行うことができます。
    • `JScrollPane`に設定したJPopupMenuを表示することができます。
    • `JTableに設定したJToolTip`を表示することができます。

`JDK 1.7.0で追加されたJLayer`を使用して、以下のように入力を禁止する方法もあります。

参考リンク

コメント