gpt4 book ai didi

java - Netbeans matisse,自定义按钮图标属性错误

转载 作者:行者123 更新时间:2023-11-30 05:51:25 26 4
gpt4 key购买 nike

我创建了一个自定义的 JButton,其中覆盖了 setIcon

public class TestButton extends JButton {

public TestButton() {
super();
}

@Override
public void setIcon(Icon icon) {
super.setIcon(icon);
imgToBufferedImg(Toolkit.getDefaultToolkit().createImage("test.png"));
}
}

这里是 imgToBufferedImg 方法。

public BufferedImage imgToBufferedImg(Image image) {
if (image == null) {
return null;
}
if (image instanceof BufferedImage) {
return ((BufferedImage) image);
} else {
BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null),
image.getHeight(null),
BufferedImage.TYPE_INT_ARGB);

Graphics g = bufferedImage.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();

return bufferedImage;
}
}

我已经在 Matisse 中添加了这个组件,没问题,但是,当我尝试设置按钮的图标属性时,出现错误:

Failed to write the value to the property "icon"

问题似乎来自 imgToBufferedImg,因为如果我在 setIcon 中删除对此方法的调用,我可以设置该属性。我的图像转换方法有什么问题?

编辑:

以下测试成功:

try {
imgToBufferedImg(ImageIO.read(new FileInputStream("test.png")));
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}

另外我刚刚发现问题是由以下原因引起的:

((ImageIcon) icon).getImage();

在 UI 准备就绪时运行此代码(例如使用 SwingUtilities.invokeLater)似乎可行。

最佳答案

问题可能出在 Toolkit#createImage() 中。 ImageIO.read() 可能会更好。此外,看起来您正在丢弃 imgToBufferedImg() 的结果。

关于java - Netbeans matisse,自定义按钮图标属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777917/

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