JScrollPaneのスクロールを禁止
Total: 8312, Today: 1, Yesterday: 5
Posted by aterai at
Last-modified:
Summary
JScrollPaneのスクロールを一時的に禁止します。
Screenshot

Advertisement
Source Code Examples
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);
}
}
});
View in GitHub: Java, KotlinDescription
Disable Scrollingをチェックして無効状態にする- スクロールバーを取得し
JScrollBar#setEnabled(boolean)メソッドを使用してこれを無効化 JScrollPane#setWheelScrollingEnabled(boolean)メソッドでマウスホイールによるスクロールを無効化JScrollPaneに配置したコンポーネントをsetEnabled(false)とし、フォーカスの移動などによるスクロールを無効化
- スクロールバーを取得し
Disable Scrollingをチェックして無効状態にしても実行可能な操作JTableHeaderは無効にしていないのでマウスクリックでのソートやドラッグによるカラムの移動が実行可能JTableに設定したJPopupMenuが表示されるJTableに設定したJToolTipが表示される
Reference
- JScrollPane#setWheelScrollingEnabled(boolean) (Java Platform SE 8)
- JLayerで子コンポーネントへの入力を制限する
JDK 1.7.0で追加されたJLayerを使用して入力を制限する方法もあるJScrollPaneがネストする場合はJLayerを使用しないと内外のJScrollPaneのスクロールを個別に制御できない
- JLayerで指定したコンポーネントへの入力を禁止