NimbusLookAndFeelでJTabbedPaneのスクロール矢印ボタンを変更する
Total: 845
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
を適用したJTabbedPane
のスクロール矢印ボタンがBasicArrowButton
かSynthArrowButton
のどちらを使用するかを切り替えます。
Screenshot
Advertisement
サンプルコード
JTabbedPane tabs = new JTabbedPane();
tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
IntStream.range(0, 100)
.forEach(i -> tabs.addTab("title" + i, new JLabel("label" + i)));
String key = "TabbedPane.useBasicArrows";
// UIManager.put(key, Boolean.FALSE);
// UIManager.put("ArrowButton.size", 24);
JCheckBox check = new JCheckBox(key, UIManager.getBoolean(key));
check.addActionListener(e -> {
boolean b = ((JCheckBox) e.getSource()).isSelected();
UIManager.put(key, b);
SwingUtilities.updateComponentTreeUI(tabs);
});
View in GitHub: Java, Kotlin解説
TabbedPane.useBasicArrows: Boolean.TRUE
NimbusLookAndFeel
のデフォルトでJTabbedPane
のスクロール矢印ボタンとしてBasicArrowButton
を使用する
TabbedPane.useBasicArrows: Boolean.FALSE
JTabbedPane
のスクロール矢印ボタンとしてSynthArrowButton
を継承したSynthScrollableTabButton
を使用するUIManager.put("ArrowButton.size", 24)
などでスクロール矢印ボタンのサイズ変更が可能
Java 11
のGTKLookAndFeel
でJTabbedPane.SCROLL_TAB_LAYOUT
を設定した場合のバグ?- スクロール矢印ボタンをクリックすると
Gtk-CRITICAL **: ...: gtk_render_frame_gap: assertion 'xy0_gap >= 0' failed
と警告がコンソールに表示される GTKLookAndFeel
のデフォルトでJSpinner
の下矢印ボタンが2
つ左右に並んで表示される- これは
UIManager.put("TabbedPane.useBasicArrows", Boolean.TRUE)
の設定で回避が可能
- これは
- スクロール矢印ボタンをクリックすると