package com.javaxyq.ui; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JPanel; public class FloatPanel extends JPanel { private static final long serialVersionUID = 1L; private RichLabel label; private long createTime; public FloatPanel(String text) { setBorder(null); setLayout(null); setOpaque(false); setIgnoreRepaint(true); setFocusable(false); label = new RichLabel(text); label.setLocation(4, 3); Dimension d = label.computeSize(14 * 7); label.setSize(d); setSize(8 + d.width, 6 + d.height); add(label); this.createTime = System.currentTimeMillis(); } public FloatPanel() { this(null); } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g.create(); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); g2d.setColor(Color.BLACK); g2d.fillRoundRect(0, 0, getWidth(), getHeight(), 10, 10); g2d.dispose(); Component[] comps = getComponents(); for (Component c : comps) { Graphics g2 = g.create(c.getX(), c.getY(), c.getWidth(), c.getHeight()); c.paint(g2); g2.dispose(); } } public void setText(String chatText) { label.setText(chatText); Dimension d = label.computeSize(14 * 7); label.setSize(d); setSize(8 + d.width, 6 + d.height); } public long getCreateTime() { return createTime; } @Override public void paintImmediately(int x, int y, int w, int h) { //super.paintImmediately(x, y, w, h); } }