JScrollBarのノブを常に表示する
Total: 1396, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JScrollBarのノブの長さがトラックと同じ長さになっても非表示にせず、常に表示されるよう設定します。
Screenshot

Advertisement
Source Code Examples
// UIManager.put("ScrollBar.alwaysShowThumb", Boolean.TRUE);
JScrollPane scroll = new JScrollPane(new JTree());
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
String key = "ScrollBar.alwaysShowThumb";
JCheckBox check = new JCheckBox(key) {
@Override public void updateUI() {
super.updateUI();
EventQueue.invokeLater(() ->
setSelected(UIManager.getLookAndFeelDefaults().getBoolean(key)));
}
};
check.addActionListener(e -> {
UIManager.getLookAndFeelDefaults().put(key, check.isSelected());
SwingUtilities.updateComponentTreeUI(scroll);
});
View in GitHub: Java, KotlinDescription
UIManager.put("ScrollBar.alwaysShowThumb", Boolean.TRUE)GTKLookAndFeelのデフォルトGTKLookAndFeel以外でもUIManager.put("ScrollBar.alwaysShowThumb", Boolean.TRUE)を設定すればJScrollBarのノブが常に表示状態になる- スクロールバーポリシーが
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS、ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS以外の場合はJScrollBar自体が非表示になるのでこの設定は無意味になる
UIManager.put("ScrollBar.alwaysShowThumb", Boolean.False)GTKLookAndFeel以外のデフォルト- 例えば
JScrollPaneのビューコンテンツの高さがJViewportの高さより小さく全高が表示されてスクロールの必要がない場合は、JScrollBarのノブは非表示になる