Try extending class JTabbedPane with say, MyTabbedPane. Then, add a MouseListener to watch for right-clicks on the tab. On right-click, show popup menu that allows user to close the tab. Code below does something like this.
Code:
public class MyTabbedPane
extends JTabbedPane
{
public MyTabbedPane()
{
super(JTabbedPane.TOP);
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
tabClicked(e);
}
});
}
private void tabClicked(MouseEvent e)
{
if (e.getButton() != MouseEvent.BUTTON1 && e.getClickCount() == 1) { // if is right-click
// create popup with Close menuitem
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem closeBtn = new JMenuItem("Close");
closeBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
closeSelectedTab();
}
});
}
});
popupMenu.add(closeBtn);
// display popup near location of mouse click
popupMenu.show(e.getComponent(), e.getX(), e.getY() - 10);
}
}
private void closeSelectedTab()
{
// do cleanup
remove( getSelectedIndex() ); // remove selected tab
}
}