package games.strategy.ui; import java.awt.Component; import java.awt.Dimension; import javax.swing.JLabel; import javax.swing.JTabbedPane; /** * A JTabbedPane that whose tabs have a fixed width. * Swing default is to use minimum sized tab for each tab. */ public class JTabbedPaneWithFixedWidthTabs extends JTabbedPane { private static final long serialVersionUID = -625035680314209854L; private static final int DEFAULT_TAB_WIDTH = 130; private static final int DEFAULT_TAB_HEIGHT = 20; private int tabIndex = 0; private final Dimension tabDimension; public JTabbedPaneWithFixedWidthTabs() { this(DEFAULT_TAB_WIDTH, DEFAULT_TAB_HEIGHT); } private JTabbedPaneWithFixedWidthTabs(final int tabWidth, final int tabHeight) { tabDimension = new Dimension(tabWidth, tabHeight); } @Override public void addTab(final String tab, final Component contents) { super.addTab(tab, contents); final JLabel sizedLabel = new JLabel(tab); sizedLabel.setPreferredSize(tabDimension); super.setTabComponentAt(tabIndex, sizedLabel); tabIndex++; } }