package com.towel.swing.separator; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JLabel; import javax.swing.UIManager; public class TitledSeparator extends JLabel { public TitledSeparator(String text) { setText(text); setFocusable(false); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g.create(); int startX = getFontMetrics(getTitleFont()).stringWidth(getText()) + 5; int half = getSize().height / 2; g2d.drawLine(startX, half, getSize().width, half); g2d.dispose(); } @Override public void updateUI() { super.updateUI(); Color foreground = getTitleColor(); if (foreground != null) { setForeground(foreground); } setFont(getTitleFont()); } private Color getTitleColor() { return UIManager.getColor("TitledBorder.titleColor"); } private Font getTitleFont() { return UIManager.getFont("TitledBorder.font"); } }