概要

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

  • Windows 11環境ではUIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32))を設定しても無効?

参考リンク

コメント