gpt4 book ai didi

java - 如何制作JButton图标透明,文字不透明?

转载 作者:行者123 更新时间:2023-11-30 03:10:42 24 4
gpt4 key购买 nike

我需要制作一个带有图像图标和常规文本的 JButton。此问题与 How to make JButton with transparent background and regular text? 不重复,因为我需要上传图像作为图标并使其透明。我尝试使用重写的paintComponent()方法

    @Override
public void paintComponent(java.awt.Graphics g) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
super.paintComponent(g2);
}

但它所做的只是将图标和文本绘制为透明,而且按钮无法正确刷新。有没有可能的解决方法?

更新

我设置按钮的方式如下(item.getImage() 返回字节数组):

        setFocusable(true);
setFocusPainted(true);
setVerticalTextPosition(SwingConstants.CENTER);
setHorizontalTextPosition(SwingConstants.CENTER);

if(item.getImage() != null) {
int w = BUTTON_SIZE - 10;
int h = BUTTON_SIZE - 10;

if(menuItem.isShowImageOnly()) {
setIcon(menuItem.getScaledImage(w, h));
}
else {
w = 80;
h = 40;

setIcon(menuItem.getScaledImage(w, h));
}

最佳答案

先在图像上绘制透明度

    Image im = ...;
java.awt.Graphics2D g2 = (java.awt.Graphics2D) im.getGraphics();
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
g2.drawImage(0,0, im, null);
g2.dispose();
ImageIcon icon = ...

关于java - 如何制作JButton图标透明,文字不透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com