
org.appdapter.gui.swing.JTabbedPaneWithCloseIcons Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.appdapter.lib.gui Show documentation
Show all versions of org.appdapter.lib.gui Show documentation
Appdapter Maven project including Java and Scala, produces jar, not bundle. Excludes concrete SLF4J binding.
The newest version!
package org.appdapter.gui.swing;
/**
* @author Obtained from http://forums.java.sun.com
*
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/** * A JTabbedPane which has a close ('X') icon on each tab. * * To add a tab, use the method addTab(String, Component) * * To have an extra icon on each tab (e.g. like in JBuilder, showing the file type) use * the method addTab(String, Component, Icon). Only clicking the 'X' closes the tab. */
public class JTabbedPaneWithCloseIcons extends JTabbedPane implements MouseListener {
public JTabbedPaneWithCloseIcons(int dir) {
super(dir);
addMouseListener(this);
}
public void addTab(String title, Component component) {
this.addTab(title, component, null);
}
public void addTab(String title, Component component, Icon extraIcon) {
super.addTab(title, new CloseTabIcon(extraIcon), component);
}
public void mouseClicked(MouseEvent e) {
try {
int tabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
if (tabNumber < 0)
return;
Icon icon = getIconAt(tabNumber);
if (icon instanceof CloseTabIcon) {
Rectangle rect = ((CloseTabIcon) icon).getBounds();
if (rect.contains(e.getX(), e.getY())) {
//the tab is being closed
this.removeTabAt(tabNumber);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void setAutoRequestFocus(boolean b) {
// TODO Auto-generated method stub
}
public void setShowCloseButtonOnMouseOver(boolean b) {
// TODO Auto-generated method stub
}
public void setBoldActiveTab(boolean b) {
// TODO Auto-generated method stub
}
public void setScrollSelectedTabOnWheel(boolean b) {
// TODO Auto-generated method stub
}
public void setCloseTabOnMouseMiddleButton(boolean closableTabs) {
// TODO Auto-generated method stub
}
public void setTabEditingAllowed(boolean b) {
// TODO Auto-generated method stub
}
public void setShowCloseButton(boolean closableTabs) {
// TODO Auto-generated method stub
}
public void setUseDefaultShowCloseButtonOnTab(boolean closableTabs) {
// TODO Auto-generated method stub
}
public void setShowCloseButtonOnTab(boolean closableTabs) {
// TODO Auto-generated method stub
}
}
/** * The class which generates the 'X' icon for the tabs. The constructor * accepts an icon which is extra to the 'X' icon, so you can have tabs * like in JBuilder. This value is null if no extra icon is required. */
class CloseTabIcon implements Icon {
private int x_pos;
private int y_pos;
private int width;
private int height;
private Icon fileIcon;
public CloseTabIcon(Icon fileIcon) {
this.fileIcon = fileIcon;
width = 18;
height = 18;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
this.x_pos = x;
this.y_pos = y;
Color col = g.getColor();
g.setColor(Color.black);
int y_p = y + 2;
g.drawLine(x + 1, y_p, x + 12, y_p);
g.drawLine(x + 1, y_p + 13, x + 12, y_p + 13);
g.drawLine(x, y_p + 1, x, y_p + 12);
g.drawLine(x + 13, y_p + 1, x + 13, y_p + 12);
g.drawLine(x + 3, y_p + 3, x + 10, y_p + 10);
g.drawLine(x + 3, y_p + 4, x + 9, y_p + 10);
g.drawLine(x + 4, y_p + 3, x + 10, y_p + 9);
g.drawLine(x + 10, y_p + 3, x + 3, y_p + 10);
g.drawLine(x + 10, y_p + 4, x + 4, y_p + 10);
g.drawLine(x + 9, y_p + 3, x + 3, y_p + 9);
g.setColor(col);
if (fileIcon != null) {
fileIcon.paintIcon(c, g, x + width, y_p);
}
}
public int getIconWidth() {
return width + (fileIcon != null ? fileIcon.getIconWidth() : 0);
}
public int getIconHeight() {
return height;
}
public Rectangle getBounds() {
return new Rectangle(x_pos, y_pos, width, height);
}
public void setShowCloseButtonOnTab(boolean closableTabs) {
// TODO Auto-generated method stub
}
public void setBoldActiveTab(boolean closableTabs) {
// TODO Auto-generated method stub
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy