20 package net.sf.gridarta.gui.utils.borderpanel;
22 import java.awt.Color;
24 import java.awt.FontMetrics;
25 import java.awt.Graphics2D;
26 import java.awt.RenderingHints;
27 import java.awt.image.BufferedImage;
28 import javax.swing.ImageIcon;
29 import javax.swing.JToggleButton;
30 import org.jetbrains.annotations.NotNull;
47 private static final Color
TRANSPARENT =
new Color(0, 0, 0, 0);
56 final Font font = getFont();
57 final FontMetrics fontMetrics = getFontMetrics(font);
58 final int textWidth = Math.max(1, fontMetrics.getHeight());
59 final int textHeight = Math.max(1, fontMetrics.stringWidth(title));
60 final BufferedImage bufferedImage =
new BufferedImage(textWidth, textHeight, BufferedImage.TYPE_INT_ARGB);
61 final Graphics2D g = bufferedImage.createGraphics();
64 g.fillRect(0, 0, textWidth, textHeight);
66 g.setColor(getForeground());
68 g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
71 g.rotate(Math.PI / 2.0);
72 g.translate(0, 1 - textWidth);
74 g.rotate(-Math.PI / 2.0);
75 g.translate(1 - textHeight, 0);
77 g.drawString(title, 0, fontMetrics.getAscent());
82 setIcon(
new ImageIcon(bufferedImage));