Swing/MouseWheelScroll のバックアップソース(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/MouseWheelScroll へ行く。
--- 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`をテストします。 #download(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()`をオーバーライドして、KBD{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 #comment