java label 透明_Java中在JLabel中添加了图片如何在图片上面加一层透明层

展开全部

直接设置一个透明图片的JLabel呗32313133353236313431303231363533e58685e5aeb931333337613163

我正好有个透明标签类,你试试看import 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();

}

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Java创建带圆角的JLabel的最简单代码: ``` import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class RoundedLabel extends JLabel { private int radius; private Color backgroundColor; public RoundedLabel(String text, int radius, Color backgroundColor) { super(text); this.radius = radius; this.backgroundColor = backgroundColor; setOpaque(false); setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); } @Override protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(backgroundColor); g2.fillRoundRect(0, 0, getWidth(), getHeight(), radius, radius); super.paintComponent(g); } public static void main(String[] args) { JFrame frame = new JFrame("Rounded Label"); JPanel panel = new JPanel(); panel.setBackground(Color.WHITE); RoundedLabel label = new RoundedLabel("Hello world!", 15, Color.YELLOW); panel.add(label); frame.add(panel); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } ``` 在这个例子,我们创建了一个自定义的JLabel,名为RoundedLabel。我们可以通过调用它的构造函数来创建一个带圆角的JLabel。在构造函数,我们设置了标签的文本、圆角半径和背景颜色,并调用了setOpaque(false)和setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10))来去除默认的标签边框和背景。在paintComponent方法,我们使用Graphics2D类来绘制一个带圆角的矩形作为标签的背景,并调用了super.paintComponent(g)来绘制标签的文本。 最后,我们在main方法创建了一个JFrame和一个JPanel,并将RoundedLabel添加到JPanel。我们也可以通过调用label.setBackground(Color.RED)来更改标签的背景颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值