Swing/MouseWheelScroll のバックアップの現在との差分(No.4)
- category: swing folder: MouseWheelScroll title: JScrollBarが非表示でもMouseWheelでScrollする tags: [JScrollBar, JScrollPane, MouseWheelListener] author: aterai pubdate: 2012-01-02T15:22:30+09:00 description: JScrollBarが非表示の場合のMouseWheelによるScrollをテストします。 image:
概要
概要
JScrollBar
が非表示の場合のMouseWheel
によるScroll
をテストします。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
JScrollBar vsb = new JScrollBar(JScrollBar.VERTICAL) {
#spanend
#spanadd
JScrollBar vsb = new JScrollBar(Adjustable.VERTICAL) {
#spanend
@Override public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize();
return new Dimension(0, dim.height);
Dimension d = super.getPreferredSize();
d.height = 0;
return d;
}
};
View in GitHub: Java, Kotlin解説
解説
PreferredSize: 0, shift pressed: Horizontal WheelScrolling
ScrollBarPolicy
はそれぞれALWAYS
で常に表示VerticalScrollBarPolicy
:VERTICAL_SCROLLBAR_ALWAYS
HorizontalScrollBarPolicy
:HORIZONTAL_SCROLLBAR_ALWAYS
-
JScrollBar#getPreferredSize()
をオーバーライドして、幅、または高さを0
- 垂直スクロールバーの
JScrollBar#isVisible()
をオーバーライドして、Shiftキーが押されている場合は、false
を返す- 垂直スクロールバーが非表示で、水平スクロールバーが表示されている場合、
MouseWheel
で水平スクロール可能
- 垂直スクロールバーが非表示で、水平スクロールバーが表示されている場合、
-
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
参考リンク
参考リンク
- JDK-6911375 mouseWheel has no effect without vertical scrollbar - Java Bug System
- 6911375: mouseWheel has no effect without vertical scrollbar by prsadhuk · Pull Request #7585 · openjdk/jdkで垂直スクロールバーが非表示でもホイールスクロール可能になるよう修正される予定