Swing/MinimumThumbRatio のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/MinimumThumbRatio へ行く。
- category: swing folder: MinimumThumbRatio title: JScrollBarのKnobの最小サイズをJScrollPaneのサイズ相対に変更する tags: [JScrollBar, JScrollPane] author: aterai pubdate: 2020-11-16T02:40:38+09:00 description: JScrollBarのKnobの最小サイズを固定値ではなく、JScrollPaneのサイズ相対になるよう設定します。 image: https://drive.google.com/uc?id=1I8jjLmU0nT0Rj2Gf8l9Z2X7nhKvlPKfz
概要
JScrollBarのKnobの最小サイズを固定値ではなく、JScrollPaneのサイズ相対になるよう設定します。
Screenshot

Advertisement
サンプルコード
JScrollPane scroll = new JScrollPane(textArea);
scroll.setVerticalScrollBar(new JScrollBar(Adjustable.VERTICAL) {
  @Override public void updateUI() {
    super.updateUI();
    setUI(new MetalScrollBarUI() {
      @Override protected Dimension getMinimumThumbSize() {
        Dimension d = super.getMinimumThumbSize();
        Rectangle r = SwingUtilities.calculateInnerArea(scroll, null);
        d.height = Math.max(d.height, r.height / 12);
        return d;
      }
    });
    putClientProperty("JScrollBar.fastWheelScrolling", Boolean.TRUE);
  }
});
解説
- 左: default- UIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32))でノブの最小サイズを設定- BasicLookAndFeel、- NimbusLookAndFeelで有効
 
- MetalLookAndFeelの場合、たとえば縦- JScrollBarは- UIManager.getInt("ScrollBar.width")の値が高さの最小サイズになる
- WindowsLookAndFeel(- Windows 10)の場合- OS(レジストリ)の設定が優先される?
- JScrollBarのKnobの最小サイズを設定する
 
- 右: override getMinimumThumbSize()- BasicScrollBarUI#getMinimumThumbSize()をオーバーライドして最小値を指定
- このサンプルではJScrollBarのノブの最小サイズは可変でJScrollPaneの高さの1/12になるよう設定