There is no predefined JTabbedPane in Java with closable tabs, so I decided to make it myself.
No doubts, there are a lot of variations of doing this with standard close icons. I wanted to make it in such a way, that only when you double click on tab - it closes.
Code:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
/**
*
* @author Aloren
*/
public class CloseTabbedPane extends JTabbedPane {
public CloseTabbedPane() {
super();
tabbedPane.addMouseListener(new CloseMouseListener(handler));
}
private static class CloseMouseListener extends MouseAdapter {
int oldIndex;
public CloseMouseListener() {
}
@Override
public void mouseClicked(MouseEvent e) {
CloseTabbedPane pane = (CloseTabbedPane)e.getSource();
int i = pane.indexAtLocation(e.getX(), e.getY());
if (e.getClickCount() == 2) {
if (i != -1) {
pane.remove(i);
if (pane.getTabCount() == 0) {
((JFrame) SwingUtilities.getRoot(pane)).dispose();
System.exit(0);
}
}
} else {
pane.getModel().setSelectedIndex(i);
}
}
}
}
Комментариев нет:
Отправить комментарий