package org.jabref.gui.util.component; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.OverlayLayout; import javax.swing.ScrollPaneConstants; /** * Supports an underlying text for JComponent */ public class OverlayPanel extends JPanel { private final JLabel label; public OverlayPanel(JComponent overlay, String text) { OverlayLayout layout = new OverlayLayout(this); this.setLayout(layout); label = new JLabel(text); label.setFont(new Font(label.getFont().getName(), Font.ITALIC, 18)); label.setForeground(new Color(224, 220, 220)); label.setLocation(0, 0); JScrollPane scroller = new JScrollPane(overlay); scroller.setLocation(0, 0); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); add(label); add(scroller); } @Override public void paint(Graphics g) { int len = label.getWidth(); Dimension dim = this.getSize(); if ((dim.height > 25) && (dim.width > (len + 10))) { int x = (dim.width - len) / 2; int y = dim.height / 2; label.setLocation(x, y); } super.paint(g); } }