Swing/MinimumThumbRatio のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/MinimumThumbRatio へ行く。
- 1 (2020-11-16 (月) 02:41:28)
- 2 (2022-11-18 (金) 16:06:18)
- 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);
}
});
View in GitHub: Java, Kotlin解説
- 左:
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
になるよう設定