Swing/DisableScrolling のバックアップの現在との差分(No.11)
TITLE:JScrollPaneのスクロールを禁止
Posted by aterai at 2005-10-03
JScrollPaneのスクロールを禁止
JScrollPaneのスクロールを一時的に禁止します。- category: swing folder: DisableScrolling title: JScrollPaneのスクロールを禁止 tags: [JScrollPane, JScrollBar] author: aterai pubdate: 2005-10-03T10:00:11+09:00 description: JScrollPaneのスクロールを一時的に禁止します。 image:
概要
JScrollPane
のスクロールを一時的に禁止します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
#spanend
#spandel
JCheckBox b = new JCheckBox("スクロールを禁止する");
#spanend
#spandel
b.addItemListener(new ItemListener() {
#spanend
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);
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#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);
}
}
});
解説
- このサンプルでは、"Disable Scrolling"をチェックして無効状態にすると
- スクロールバーを取得し、JScrollBar#setEnabled(boolean)メソッドを使って、これを無効にします。
- JScrollPane#setWheelScrollingEnabled(boolean)メソッドで、マウスホイールによるスクロールを無効にします。
- JScrollPaneに配置したコンポーネントをsetEnabled(false)とし、フォーカスの移動などによるスクロールを無効にします。
解説
-
Disable Scrolling
をチェックして無効状態にする- スクロールバーを取得し
JScrollBar#setEnabled(boolean)
メソッドを使用してこれを無効化 -
JScrollPane#setWheelScrollingEnabled(boolean)
メソッドでマウスホイールによるスクロールを無効化 -
JScrollPane
に配置したコンポーネントをsetEnabled(false)
とし、フォーカスの移動などによるスクロールを無効化
- スクロールバーを取得し
-
Disable Scrolling
をチェックして無効状態にしても実行可能な操作-
JTableHeader
は無効にしていないのでマウスクリックでのソートやドラッグによるカラムの移動が実行可能 -
JTable
に設定したJPopupMenu
が表示される -
JTable
に設定したJToolTip
が表示される
-
- -
- このサンプルでは、"Disable Scrolling"をチェックして無効状態にしても
- JTableHeaderは無効にしていないので、クリックしてソートや、カラムの移動を行うことができます。
- JScrollPaneに設定したJPopupMenuを表示することができます。
- JTableに設定したJToolTipを表示することができます。
参考リンク
- JLayerで子コンポーネントへの入力を制限する
-
JDK 1.7.0
で追加されたJLayer
を使用して入力を制限する方法もある
-
- JLayerで指定したコンポーネントへの入力を禁止
- - JDK 1.7.0 で追加されたJLayerを使用して、以下のように入力を禁止する方法もあります。