Color TabbedPane Example
// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html /* (swing1.1.1) */ import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.UIManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.plaf.metal.MetalTabbedPaneUI; /** * @version 1.0 08/23/99 */ public class ColorTabbedPaneExample extends JFrame { String[] titles = { "blue", "cyan", "green", "yellow", "orange", "pink", "red" }; Color[] colors = { Color.blue, Color.cyan, Color.green, Color.yellow, Color.orange, Color.pink, Color.red }; JTabbedPane tabbedPane; public ColorTabbedPaneExample() { super("ColorTabbedPaneExample (Metal)"); UIManager.put("TabbedPane.selected", colors[0]); tabbedPane = new JTabbedPane() { public void updateUI() { setUI(new ColoredTabbedPaneUI()); } }; for (int i = 0; i < titles.length; i++) { tabbedPane.addTab(titles[i], createPane(titles[i], colors[i])); tabbedPane.setBackgroundAt(i, colors[i].darker()); } tabbedPane.setSelectedIndex(0); tabbedPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { int i = tabbedPane.getSelectedIndex(); ((ColoredTabbedPaneUI) tabbedPane.getUI()) .setSelectedTabBackground(colors[i]); tabbedPane.revalidate(); tabbedPane.repaint(); } }); getContentPane().add(tabbedPane); } JPanel createPane(String title, Color color) { JPanel panel = new JPanel(); panel.setBackground(color); JLabel label = new JLabel(title); label.setOpaque(true); label.setBackground(Color.white); panel.add(label); return panel; } class ColoredTabbedPaneUI extends MetalTabbedPaneUI { public void setSelectedTabBackground(Color color) { selectColor = color; } protected void paintFocusIndicator(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect, boolean isSelected) { } } public static void main(String[] args) { JFrame frame = new ColorTabbedPaneExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setSize(360, 100); frame.setVisible(true); } }