import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.Map; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTabbedPane; public class TabbedPaneSample2 { private JTabbedPane pane; public TabbedPaneSample2() { JFrame frame = new JFrame("TabbedPane Sample"); pane = new JTabbedPane(); for (int i = 0; i < 5; i++) { JLabel label = new JLabel("Tab " + i); pane.addTab(null, label); JComponent tabComp = createTabComponent("Tab " + i); pane.setTabComponentAt(i, tabComp); } frame.add(pane); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 200); frame.setVisible(true); } private JComponent createTabComponent(String title) { JComponent comp = new JComponent() {}; comp.setLayout(new BorderLayout(5, 5)); JLabel label = new JLabel(title, JLabel.LEFT); comp.add(label, BorderLayout.CENTER); ImageIcon icon = new ImageIcon("close.gif"); JButton button = new JButton(icon); int width = icon.getIconWidth(); int height = icon.getIconHeight(); button.setPreferredSize(new Dimension(width, height)); comp.add(button, BorderLayout.EAST); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { Component tabComp = ((Component)event.getSource()).getParent(); int index = pane.indexOfTabComponent(tabComp); pane.remove(index); } }); return comp; } public static void main(String[] args) { new TabbedPaneSample2(); } }