Swing/TabTitleAlignment のバックアップの現在との差分(No.13)
- category: swing folder: TabTitleAlignment title: JTabbedPaneのTabTitleを左揃えに変更 tags: [JTabbedPane, Alignment, JButton] author: aterai pubdate: 2010-10-11T18:19:33+09:00 description: JTabbedPaneのTabTitleの揃えをデフォルトの中央揃えから左揃えに変更します。 image:
概要
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
(閉じる)を右揃え
- JTabbedPaneのタブを等幅にしてタイトルをクリップ、ButtonTabComponent.javaを変更してタイトルを左揃え、
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
- Swing - JTabbedPane title alignment
- Bug ID: 4220177 labels within JTabbedPane tabs should be alignable
- Bug ID: 4220177 labels within JTabbedPane tabs should be alignable