JTabbedPaneのTabTitleを左揃えに変更
Total: 5666
, Today: 2
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JTabbedPane
のTabTitle
の揃えをデフォルトの中央揃えから左揃えに変更します。
Screenshot
Advertisement
サンプルコード
class MyTabbedPaneUI extends MetalTabbedPaneUI {
@Override protected void layoutLabel(int tabPlacement,
FontMetrics metrics, int tabIndex,
String title, Icon icon,
Rectangle tabRect, Rectangle iconRect,
Rectangle textRect, boolean isSelected ) {
textRect.x = textRect.y = iconRect.x = iconRect.y = 0;
// ...
SwingUtilities.layoutCompoundLabel((JComponent) tabPane,
metrics, title, icon,
SwingUtilities.CENTER,
SwingUtilities.LEFT, //CENTER, <----
SwingUtilities.CENTER,
SwingUtilities.TRAILING,
tabRect,
iconRect,
textRect,
textIconGap);
tabPane.putClientProperty("html", null);
textRect.translate(tabInsets.left, 0); //<----
textRect.width -= tabInsets.left + tabInsets.right;
// ...
}
}
View in GitHub: Java, Kotlin解説
- 上
- デフォルト(中央揃え)
- 中
WindowsTabbedPaneUI#layoutLabel(...)
などをオーバーライドして左揃えに変更
- 下
- JTabbedPaneのタブを等幅にしてタイトルをクリップ、ButtonTabComponent.javaを変更してタイトルを左揃え、
TabButton
(閉じる)を右揃えpublic ButtonTabComponent(final JTabbedPane pane) { // unset default FlowLayout' gaps // super(new FlowLayout(FlowLayout.LEFT, 0, 0)); super(new BorderLayout(0, 0)); // ... // add(button); add(button, BorderLayout.EAST); // ...
- JTabbedPaneのタブを等幅にしてタイトルをクリップ、ButtonTabComponent.javaを変更してタイトルを左揃え、
参考リンク
- JTabbedPaneのタブを等幅にしてタイトルをクリップ
- ButtonTabComponent.java
- Swing - JTabbedPane title alignment
- Bug ID: 4220177 labels within JTabbedPane tabs should be alignable