满意答案
kpbn3217
2015.08.12
采纳率:44% 等级:9
已帮助:566人
直接设置一个透明图片的JLabel呗
我正好有个透明标签类,你试试看123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Composite;import java.awt.Graphics2D;import java.awt.GraphicsConfiguration;import java.awt.Image;import java.awt.Transparency; import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel; public class LimpidLabel extends JLabel { public static void main(String[] args) { JFrame frm = new JFrame("demo"); LimpidLabel lbl = new LimpidLabel("1.png", 0.5f); frm.add(lbl); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.pack(); frm.setLocationRelativeTo(null); frm.setVisible(true); } public LimpidLabel(String imagePath, float alpha) { this(new ImageIcon(imagePath).getImage(), alpha); } public LimpidLabel(Image img, float alpha) { int w, h; try { w = img.getWidth(this); //读取图片长度 h = img.getHeight(this); //读取图片宽度 GraphicsConfiguration gc = new JFrame().getGraphicsConfiguration(); // 本地图形设备 Image image = gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT); //建立透明画布 Graphics2D g = (Graphics2D) image.getGraphics(); //在画布上创建画笔 Composite a = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha); //指定透明度为alpha g.setComposite(a); g.drawImage(img, 0, 0, this); //将image画到g画笔所在的画布上 g.dispose(); //释放内存 this.setIgnoreRepaint(true); //不自动重绘 this.setFocusable(false); //设置没有焦点 this.setIcon(new ImageIcon(image)); //把刚才生成的半透明image设置为Icon } catch (Exception e) { e.printStackTrace(); } } }
00分享举报