TITLE:JScrollBarが非表示でもMouseWheelでScrollする
#navi(../)
RIGHT:Posted by &author(aterai); at 2012-01-02
*JScrollBarが非表示でもMouseWheelでScrollする [#e1c0e358]
JScrollBarが非表示の場合のMouseWheelによるScrollをテストします。

-&jnlp;
-&jar;
-&zip;

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

**サンプルコード [#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()をオーバーライドして、Shiftキーが押されている場合は、falseを返す
--- 垂直スクロールバーが非表示で、水平スクロールバーが表示されている場合、MouseWheelで水平スクロール可能

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

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

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

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