• category: swing folder: MinimumThumbSize title: JScrollBarのKnobの最小サイズを設定する tags: [JScrollBar, UIManager, JSlider, Fixed] 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

概要

JScrollBarKnobの最小サイズを設定します。

サンプルコード

UIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32));
View in GitHub: Java, Kotlin

解説

  • 左: デフォルト
  • 右: JScrollBarのつまみ(ThumbKnob)に最小サイズを設定
    • Horizontalの場合の最小サイズは幅、Verticalの場合は高さ
  • LookAndFeelによってUIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32));が有効かどうかは異なる
    • 有効: BasicLookAndFeelWindowsLookAndFeelNimbusLookAndFeel(Java 8以上?)
    • 無効: MetalLookAndFeelNimbusLookAndFeel
      • 以下のように縦スクロールバーならその幅が最小サイズになるよう上書きされているためScrollBar.minimumThumbSizeを設定しても効果がない
        // @see javax/swing/plaf/metal/MetalScrollBarUI.java
        protected Dimension getMinimumThumbSize() {
          return new Dimension(scrollBarWidth, scrollBarWidth);
        }
        


Windows 7WindowsLookAndFeelJSliderを使った場合も、つまみのサイズが小さすぎるが、UIManager.put("Slider.minimumHorizontalSize", new Dimension(32, 32))などとしても効果がない?

Slider.horizontalSize
Slider.verticalSize
Slider.minimumHorizontalSize
Slider.minimumVerticalSize
Slider.horizontalThumbIcon
Slider.verticalThumbIcon

参考リンク

コメント