Swing/TabbedPaneUseBasicArrows のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TabbedPaneUseBasicArrows へ行く。
- 1 (2022-09-05 (月) 03:38:10)
- 2 (2022-09-07 (水) 22:04:38)
- 3 (2022-10-24 (月) 15:02:56)
- 4 (2022-10-30 (日) 19:02:03)
- 5 (2022-11-12 (土) 09:04:29)
- category: swing folder: TabbedPaneUseBasicArrows title: NimbusLookAndFeelでJTabbedPaneのスクロール矢印ボタンを変更する tags: [NimbusLookAndFeel, JTabbedPane, ArrowButton, UIManager] author: aterai pubdate: 2022-09-05T03:34:14+09:00 description: NimbusLookAndFeelを適用したJTabbedPaneのスクロール矢印ボタンがBasicArrowButtonかSynthArrowButtonのどちらを使用するかを切り替えます。 image: https://drive.google.com/uc?id=1kL0AppkB4JwnMPqMOEcChAIp3L58NV3F
概要
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)
で回避可能
- これは
- スクロール矢印ボタンをクリックすると