gpt4 book ai didi

java - setBackgrounds 在 Windows 中抛出异常(但在 MacOSX 中不会)

转载 作者:行者123 更新时间:2023-12-02 07:32:15 24 4
gpt4 key购买 nike

我试图拥有图像背景,因此我在 JFrame 中创建了以下代码:

@Override
public void paint(Graphics g) {
super.paint(g);
try {
final Image image = ImageIO.read(getClass().getResource("/images/login/gentlenoise100.png"));
int iw = 256;
int ih = 256;
for (int x = 0; x < getWidth(); x += iw) {
for (int y = 0; y < getHeight(); y += ih) {
g.drawImage(image, x, y, iw, ih, this);
}
}
} catch (IOException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
for(Component componente:getComponents()){
componente.repaint();
}

}

我发现背景颜色有某种偏好,所以我决定将其设置为不可见:

setBackground(new java.awt.Color(0,0,0,0));

它在 Mac OS X (java 1.6) 中工作正常,我必须在 Windows 中探测它,如果我删除 setBackground 调用,它不会显示我的背景,如果我保持背景颜色不可见,它会引发异常并说框架已装饰!

我尝试使用setUndecorate(true),但在 macOS 中它会丢失标题栏(当然),而在 Windows 中它会给我一个透明窗口。

我该如何解决这个问题?

最佳答案

共有三种使用方法

  1. JComponent#setOpaque() 如果您不想气喘吁吁地背景

  2. How to Create Translucent and Shaped Windows在Win、OSX上一些***unix

  3. 对于 Transparency have to change value of AlphaComposite

<小时/>

不要对 JFrame 进行 paint() 任何操作,将 JPanel 放在那里并覆盖 paintComponent()

关于java - setBackgrounds 在 Windows 中抛出异常(但在 MacOSX 中不会),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12745244/

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