Swing/MinimumThumbSize のバックアップ差分(No.11)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/MinimumThumbSize へ行く。
- 1 (2012-12-13 (木) 15:17:24)
- 2 (2013-03-19 (火) 18:40:49)
- 3 (2013-03-20 (水) 00:36:13)
- 4 (2014-04-02 (水) 14:55:48)
- 5 (2014-04-07 (月) 00:04:51)
- 6 (2014-09-29 (月) 17:40:25)
- 7 (2014-11-27 (木) 18:32:08)
- 8 (2016-01-01 (金) 01:13:16)
- 9 (2016-05-26 (木) 15:15:47)
- 10 (2017-03-30 (木) 14:19:07)
- 11 (2017-04-07 (金) 13:51:51)
- 12 (2017-11-02 (木) 15:38:50)
- 13 (2017-12-07 (木) 11:45:02)
- 14 (2019-08-14 (水) 15:44:34)
- 15 (2020-11-12 (木) 17:47:59)
- 16 (2020-11-16 (月) 02:34:17)
- 17 (2022-08-20 (土) 22:15:25)
- 18 (2022-12-09 (金) 12:44:41)
- 19 (2023-09-15 (金) 12:45:15)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: MinimumThumbSize title: JScrollBarのKnobの最小サイズを設定する tags: [JScrollBar, UIManager, JSlider] author: aterai pubdate: 2012-03-19T15:02:42+09:00 description: JScrollBarのKnobの最小サイズを設定します。 image: https://lh4.googleusercontent.com/-A8TRDbOQ1p4/T2bKeM8dcvI/AAAAAAAABKI/iBKMsL6eGfM/s800/MinimumThumbSize.png --- * 概要 [#summary] `JScrollBar`の`Knob`の最小サイズを設定します。 #download(https://lh4.googleusercontent.com/-A8TRDbOQ1p4/T2bKeM8dcvI/AAAAAAAABKI/iBKMsL6eGfM/s800/MinimumThumbSize.png) * サンプルコード [#sourcecode] #code(link){{ UIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32)); }} * 解説 [#explanation] 上記のサンプルでは、右の`JScrollPane`で、`JScrollBar`の`Knob`(`Thumb`)が短くなりすぎないように、最小サイズ(`Horizontal`の場合は幅、`Vertical`の場合は高さ)を設定します。 - 注: `LookAndFeel`によって、`UIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32));`が有効かどうかは異なる -- 有効: `BasicLookAndFeel`、`WindowsLookAndFeel` -- 無効: `MetalLookAndFeel`、`NimbusLookAndFeel` --- 以下のように、縦スクロールバーならその幅が最小サイズになるよう上書きされているため #code{{ // @see javax/swing/plaf/metal/MetalScrollBarUI.java protected Dimension getMinimumThumbSize() { return new Dimension(scrollBarWidth, scrollBarWidth); } }} ---- - `JDK 1.8.0_20`で修正されて、この記事のスクリーンショットのようにノブのサイズが小さくなり過ぎることはなくなった -- `WindowsScrollBarUI`(`XPStyle`)でのバグだったようだ -- `WindowsScrollBarUI`(`XPStyle`)が修正された -- [http://bugs.java.com/view_bug.do?bug_id=8039464 Bug ID: JDK-8039464 The scrollbar in JScrollPane has no right border if used WindowsLookAndFeel] ---- `Windows 7`の`WindowsLookAndFeel`で`JSlider`を使った場合も、つまみ?のサイズが小さすぎるが、`UIManager.put("Slider.minimumHorizontalSize", new Dimension(32, 32))`などとしても効果がない? Slider.horizontalSize Slider.verticalSize Slider.minimumHorizontalSize Slider.minimumVerticalSize Slider.horizontalThumbIcon Slider.verticalThumbIcon - 参考: [http://stackoverflow.com/questions/2754306/java-swing-rendering-bug-on-windows-7-look-and-feel Java Swing rendering bug on Windows 7 look-and-feel? - Stack Overflow] -- `slider.setPaintTicks(true)`とした場合は、正常なサイズで描画される - [[JSliderのつまみの形状を変更>Swing/ThumbArrowShape]] -- トラックを表示したくない場合は、`slider.putClientProperty("Slider.paintThumbArrowShape", Boolean.TRUE);`で、つまみの形だけ変更 * 参考リンク [#reference] - [http://stackoverflow.com/questions/2754306/java-swing-rendering-bug-on-windows-7-look-and-feel Java Swing rendering bug on Windows 7 look-and-feel? - Stack Overflow] - [[JSliderのつまみの形状を変更>Swing/ThumbArrowShape]] * コメント [#comment] #comment #comment