Um recurso bem legal do Swing é o JDesktopPane. Ele permite gerenciar múltiplas janelas em um mesmo JFrame, simulando um ambiente gráfico de sistema operacional.
Mas ambiente gráfico que é ambiente gráfico tem que ter um papel de parede! (alguns puritanos do IceWM comerão meu fígado)
Então, pra colocar o seu próprio plano de fundo em um JDesktopPane, aí vai o código:
Primeiro, criamos uma classe, que eu vou chamar de BackgroundedDesktopPane.
No meu exemplo, eu quero que o meu programa principal XXX.java tenha como plano de fundo a imagem "background.png":
class BackgroundedDesktopPane extends JDesktopPane {
Image img;
public BackgroundedDesktopPane() {
try {
java.net.URL caminho = XXX.class
.getResource("background.png");
img = javax.imageio.ImageIO.read(caminho);
} catch (Exception e) {}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null)
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
else
g.drawString("Imagem não encontrada", 50, 50);
}
}
Beleza. Isto feito, agora é só inserir um BackgroundedDesktopPane no seu JFrame:
final JDesktopPane desktopPane = new BackgroundedDesktopPane();
frame.getContentPane().add(desktopPane, BorderLayout.CENTER);
Nesse exemplo, a figura "background.png" deve ficar no mesmo diretório que o arquivo XXX.class. Se quiser colocar em outro diretório, é só colocar o endereço relativo a esta classe.
Adaptado do Fórum Java
Té mais o/
4 comentários:
Lindo, eu sempre quis fazer isso e nunca tinha achado =)
bacana d+, tava precisando disso.
show, vlw.,
ah, sera q tem como optimizar o carregamento da imagem?
vlw mesmo., grande post..
ótimo código...
desculpa, mas o "frame" que encontra-se na linha dois depois do tratamento do código significa o que? eu coloquei um this, mas não funcionou, diz que a imagem não foi encontrada ..vc pode me ajudar sou iniciante. Obrigada.
=D
Postar um comentário