• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JScrollBarが非表示でもMouseWheelでScrollする
#navi(../)
#tags(JScrollBar, JScrollPane, MouseWheelListener)
RIGHT:Posted by &author(aterai); at 2012-01-02
*JScrollBarが非表示でもMouseWheelでScrollする [#e1c0e358]
``JScrollBar``が非表示の場合の``MouseWheel``による``Scroll``をテストします。
---
title: JScrollBarが非表示でもMouseWheelでScrollする
tags: [JScrollBar, JScrollPane, MouseWheelListener]
author: aterai
pubdate: 2012-01-02T15:22:30+09:00
description: JScrollBarが非表示の場合のMouseWheelによるScrollをテストします。
---
* 概要 [#e1c0e358]
`JScrollBar`が非表示の場合の`MouseWheel`による`Scroll`をテストします。

-&jnlp;
-&jar;
-&zip;
#download(https://lh6.googleusercontent.com/-65-zGNk3eWU/TwFLJU_DP4I/AAAAAAAABHg/mEXoePs30sk/s800/MouseWheelScroll.png)

//#screenshot
#ref(https://lh6.googleusercontent.com/-65-zGNk3eWU/TwFLJU_DP4I/AAAAAAAABHg/mEXoePs30sk/s800/MouseWheelScroll.png)

**サンプルコード [#tac5ef1f]
* サンプルコード [#tac5ef1f]
#code(link){{
JScrollBar vsb = new JScrollBar(JScrollBar.VERTICAL) {
  @Override public Dimension getPreferredSize() {
    Dimension dim = super.getPreferredSize();
    return new Dimension(0, dim.height);
  }
};
}}

**解説 [#u8a96598]
- ``PreferredSize: 0, shift pressed: Horizontal WheelScrolling``
-- ``ScrollBarPolicy``はそれぞれ``ALWAYS``で常に表示
--- ``VerticalScrollBarPolicy``: ``VERTICAL_SCROLLBAR_ALWAYS``
--- ``HorizontalScrollBarPolicy``: ``HORIZONTAL_SCROLLBAR_ALWAYS``
-- ``JScrollBar#getPreferredSize()``をオーバーライドして、幅、または高さを0
-- 垂直スクロールバーの``JScrollBar#isVisible()``をオーバーライドして、シフトキーが押されている場合は、``false``を返す
--- 垂直スクロールバーが非表示で、水平スクロールバーが表示されている場合、``MouseWheel``で水平スクロール可能
* 解説 [#u8a96598]
- `PreferredSize: 0, shift pressed: Horizontal WheelScrolling`
-- `ScrollBarPolicy`はそれぞれ`ALWAYS`で常に表示
--- `VerticalScrollBarPolicy`: `VERTICAL_SCROLLBAR_ALWAYS`
--- `HorizontalScrollBarPolicy`: `HORIZONTAL_SCROLLBAR_ALWAYS`
-- `JScrollBar#getPreferredSize()`をオーバーライドして、幅、または高さを`0`
-- 垂直スクロールバーの`JScrollBar#isVisible()`をオーバーライドして、KBD{Shift}キーが押されている場合は、`false`を返す
--- 垂直スクロールバーが非表示で、水平スクロールバーが表示されている場合、`MouseWheel`で水平スクロール可能

- ``SCROLLBAR_ALWAYS``
-- ``ScrollBarPolicy``はそれぞれ``ALWAYS``で常に表示
--- ``VerticalScrollBarPolicy``: ``VERTICAL_SCROLLBAR_ALWAYS``
--- ``HorizontalScrollBarPolicy``: ``HORIZONTAL_SCROLLBAR_ALWAYS``
- `SCROLLBAR_ALWAYS`
-- `ScrollBarPolicy`はそれぞれ`ALWAYS`で常に表示
--- `VerticalScrollBarPolicy`: `VERTICAL_SCROLLBAR_ALWAYS`
--- `HorizontalScrollBarPolicy`: `HORIZONTAL_SCROLLBAR_ALWAYS`

- ``SCROLLBAR_NEVER``
-- ``ScrollBarPolicy``はそれぞれ``NEVER``で常に非表示
--- ``VerticalScrollBarPolicy``: ``VERTICAL_SCROLLBAR_NEVER``
--- ``HorizontalScrollBarPolicy``: ``HORIZONTAL_SCROLLBAR_NEVER``
- `SCROLLBAR_NEVER`
-- `ScrollBarPolicy`はそれぞれ`NEVER`で常に非表示
--- `VerticalScrollBarPolicy`: `VERTICAL_SCROLLBAR_NEVER`
--- `HorizontalScrollBarPolicy`: `HORIZONTAL_SCROLLBAR_NEVER`

**参考リンク [#ue9f6357]
* 参考リンク [#ue9f6357]
- [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6911375 Bug ID: 6911375 mouseWheel has no effect without vertical scrollbar]

**コメント [#p89a663c]
* コメント [#p89a663c]
#comment
#comment