JScrollBarのKnobの最小サイズをJScrollPaneのサイズ相対に変更する
Total: 1782, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JScrollBarのKnobの最小サイズを固定値ではなく、JScrollPaneのサイズ相対になるよう設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
- 左:
defaultUIManager.put("ScrollBar.minimumThumbSize", new Dimension(32, 32))でノブの最小サイズを設定BasicLookAndFeel、NimbusLookAndFeelで有効
MetalLookAndFeelの場合、たとえば縦JScrollBarはUIManager.getInt("ScrollBar.width")の値が高さの最小サイズになるWindowsLookAndFeelの場合OS(レジストリ)の設定が優先される?- JScrollBarのKnobの最小サイズを設定する
- 右:
override getMinimumThumbSize()BasicScrollBarUI#getMinimumThumbSize()をオーバーライドして最小値を指定- このサンプルでは
JScrollBarのノブの最小サイズは可変でJScrollPaneの高さの1/12になるよう設定