画像の背景を作成しようとしていたので、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)
たが、macosx では (もちろん) タイトル バーが失われ、Windows では透明なウィンドウが表示されます。
どうすれば解決できますか?