NimbusLookAndFeelでJTabbedPaneのタブテキストとアイコンの水平方向の配置方法を変更する
Total: 856
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
を設定したJTabbedPane
のタブテキストとアイコンの水平方向の配置方法やその間隔を変更します。
Screenshot
Advertisement
サンプルコード
// UIManager.put("TabbedPane.textIconGap", 4);
JTabbedPane tabbedPane0 = new JTabbedPane() {
@Override public void updateUI() {
super.updateUI();
System.out.println(UIManager.getInt("TabbedPane.textIconGap"));
// UIDefaults d = new UIDefaults();
// d.put("TabbedPane.textIconGap", 4);
// putClientProperty("Nimbus.Overrides", d);
// putClientProperty("Nimbus.Overrides.InheritDefaults", true);
}
};
add(makeTitledPanel(
"Default addTab(title, icon, c)",
initTabbedPane(tabbedPane0)));
JTabbedPane tabbedPane1 = new JTabbedPane() {
@Override public void insertTab(
String title, Icon icon, c component, String tip, int index) {
super.insertTab(title, icon, c, tip, index);
JLabel label = new JLabel(title, icon, SwingConstants.LEADING);
setTabComponentAt(getTabCount() - 1, label);
}
};
add(makeTitledPanel(
"TabComponent + JLabel + LEADING",
initTabbedPane(tabbedPane1)));
View in GitHub: Java, Kotlin解説
Default addTab(title, icon, c)
JTabbedPane#addTab(title, icon, c)
メソッドでタブテキストとアイコンを追加した場合、NimbusLookAndFeel
でのデフォルト水平方向配置はテキスト、アイコンの順番になるMetalLookAndFeel
やWindowsLookAndFeel
のデフォルトはアイコン、テキストの順番になるJTabbedPane#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)
を設定すればアイコン、テキストの順番になるが、一行タブエリア内でのタブ配置が右寄せになるNimbusLookAndFeel
でのタブテキストとアイコンの間隔は未設定でデフォルトは0
になっているMetalLookAndFeel
やWindowsLookAndFeel
のデフォルトは4
NimbusLookAndFeel
でもJMenuItem
などのテキストとアイコンの間隔のデフォルトは4
NimbusLookAndFeel
でもタブテキストとアイコンの間隔はUIManager.put("TabbedPane.textIconGap", 4)
やUIDefaults
で変更可能
TabComponent + JLabel + LEADING
new JLabel(title, icon, SwingConstants.LEADING)
などでテキストとアイコンをもつJLabel
を作成し、JTabbedPane#setTabComponentAt(...)
で設定することでLookAndFeel
に依存せずにタブテキストとアイコンの水平方向配置方法などを使用可能
参考リンク
- JTabbedPaneのタブエリアに余白を設定する
- JTabbedPaneで選択されたタブのみタイトルを表示する
- [JDK-6875229] Wrong placement of icons in JTabbedPane in Nimbus - Java Bug System
- 6875229: Wrong placement of icons in JTabbedPane in Nimbus by prsadhuk · Pull Request #14596 · openjdk/jdk · GitHub
Java 22
で修正されてNimbusLookAndFeel
でもアイコン、テキストの順番になったJava 22
以外へバックポートされるかは不明