Swing/AlwaysShowThumb のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/AlwaysShowThumb へ行く。
- 1 (2022-03-28 (月) 08:01:06)
- category: swing folder: AlwaysShowThumb title: JScrollBarのノブを常に表示する tags: [JScrollBar, UIManager, LookAndFeel] author: aterai pubdate: 2022-03-28T07:58:55+09:00 description: JScrollBarのノブの長さがトラックと同じ長さになっても非表示にせず、常に表示されるよう設定します。 image: https://drive.google.com/uc?id=1BeoM_Wcry_psyXpkeTSdy9Wh0nDP_XtW
概要
JScrollBarのノブの長さがトラックと同じ長さになっても非表示にせず、常に表示されるよう設定します。
Screenshot
Advertisement
サンプルコード
// 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, Kotlin解説
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
のノブは非表示になる