How to set JTabbedPane Tab height width background foreground color (Both selected and Unselected Tab)
How to set the JTabbedPane
Tab background and Foregrou开发者_StackOverflow社区nd, Height and Width (Both selected and Unselected Tab)
You can set new values to the UIDefaults:
UIDefaults def = UIManager.getLookAndFeelDefaults();
def.put( "TabbedPane.foreground", Color.RED );
def.put( "TabbedPane.textIconGap", new Integer(16) );
def.put( "TabbedPane.background", Color.BLUE );
def.put( "TabbedPane.tabInsets", new Insets(10,10,10,10) );
def.put( "TabbedPane.selectedTabPadInsets", new Insets(10,20,10,20) );
here are a list of Keys
TabbedPane.textIconGap
TabbedPane.contentOpaque
TabbedPane.focus
TabbedPane.foreground
TabbedPane.tabRunOverlay
TabbedPane.shadow
TabbedPane.darkShadow
TabbedPane.background
TabbedPane.ancestorInputMap
TabbedPane.focusInputMap
TabbedPane.tabInsets
TabbedPane.light
TabbedPane.contentBorderInsets
TabbedPane.tabsOverlapBorder
TabbedPane.tabsOpaque
TabbedPane.tabAreaInsets
TabbedPane.highlight
TabbedPane.font
TabbedPane.selectedTabPadInsets
For Nimbus LookAndFeel there are some other Nimbus Defaults like:
TabbedPane:TabbedPaneTabArea.contentMargins
TabbedPane:TabbedPaneTabArea[Enabled].backgroundPainter
TabbedPane:TabbedPaneTab[Selected].backgroundPainter
TabbedPane:TabbedPaneTabArea[Enabled].backgroundPainter
TabbedPane:TabbedPaneTab.contentMargins
TabbedPane.tabOverlap
One way to change height and width of tabs is to use HTML and/or CSS in label of tab. You can use CSS padding attribute in HTML 'span' or 'p' element for this purpose.
You can control the height as follows:
JTabbedPane tabs = new JTabbedPane();
tabs.setUI(new BasicTabbedPaneUI() {
@Override
protected int calculateTabHeight(int tabPlacement, int tabIndex, int fontHeight) {
return 45; // manipulate this number however you please.
}
});
If each tab needs to be a different height, this answer might also be useful: How to handle the height of the tab title in JTabbedPane
精彩评论