Swing/TabTitleAlignment の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TabTitleAlignment へ行く。
- Swing/TabTitleAlignment の差分を削除
--- 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: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTU2Jp4a6I/AAAAAAAAAms/x6g2ML8eyyQ/s800/TabTitleAlignment.png --- * 概要 [#summary] `JTabbedPane`の`TabTitle`の揃えをデフォルトの中央揃えから左揃えに変更します。 #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTU2Jp4a6I/AAAAAAAAAms/x6g2ML8eyyQ/s800/TabTitleAlignment.png) * サンプルコード [#sourcecode] #code(link){{ 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; // ... } } }} * 解説 [#explanation] - 上 -- デフォルト(中央揃え) - 中 -- `WindowsTabbedPaneUI#layoutLabel(...)`などをオーバーライドして左揃えに変更 - 下 -- [[JTabbedPaneのタブを等幅にしてタイトルをクリップ>Swing/ClippedTitleTab]]、[https://docs.oracle.com/javase/tutorial/uiswing/examples/components/TabComponentsDemoProject/src/components/ButtonTabComponent.java ButtonTabComponent.java]を変更してタイトルを左揃え、`TabButton`(閉じる)を右揃え #code{{ 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); // ... }} * 参考リンク [#reference] - [[JTabbedPaneのタブを等幅にしてタイトルをクリップ>Swing/ClippedTitleTab]] - [https://docs.oracle.com/javase/tutorial/uiswing/examples/components/TabComponentsDemoProject/src/components/ButtonTabComponent.java ButtonTabComponent.java] - [https://community.oracle.com/thread/1556158 Swing - JTabbedPane title alignment] - [https://bugs.openjdk.java.net/browse/JDK-4220177 Bug ID: 4220177 labels within JTabbedPane tabs should be alignable] - [https://bugs.openjdk.org/browse/JDK-4220177 Bug ID: 4220177 labels within JTabbedPane tabs should be alignable] * コメント [#comment] #comment #comment