我想有一個圖像的背景,所以我創建了一個JFrame以下代碼:setBackgrounds在Windows拋出異常(但不是在MacOSX上)
@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)
,但在macosx它丟失了標題欄(當然),並在Windows中它給了我一個透明的窗口。
我該如何解決呢?
[This](http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html)可能有助於解釋爲什麼你有問題帶有alpha值的setBackground – MadProgrammer