Tem como colocar uma imagem como plano de fundo em um painel utilizando o netBeans. De que forma?
NetBeans - Plano de fundo
7 Respostas
Infelizmente isso não é possivel de uma maneira simples, tem que ser na unha mesmo, fazer alguma gambiarra do tipo por uma imagem numa label e deixar a label do tamanho do seu panel…
Se eu estiver enganada, me deixem saber… pois será algo muito util pra mim também

Infelizmente não tem como fazer isso arrastando e soltanto um painel com imagem.
O que você pode fazer é criar uma sublasse de JPanel sobrescrevendo o método paintComponent para pintar a imagem no painel.
Ai você arrasta um JPanel normal para o formulário, vai na aba “code” (é uma aba do painel de propriedades) e em Custom Creation Code, vc coloca o código do construtor do seu painel personalizado.
[]´s
Disponibilizei no GUJ uma classe que é um painel com imagem de fundo:
http://www.guj.com.br/posts/list/56248.java#295271
Ela suporta os recursos de esticar, centralizar ou deixar lado-a-lado, como o Windows XP.
Agora, não sei aplicar essa classe usando o Netbeans, pq uso Eclipse.
Talvez o David possa dar uma ajuda nesse quesito.
Na verdade, agora que me lembrei. Você pode criar um segundo painel, que seja subclasse do painel de imagem do Vinícius, e nessa sua subclasse, vc fixa a imagem que quer carregar. Depois que compilar o projeto, vc arrasta a classe compilada para o JFrame.
Estou montanto um exemplo aqui com a classe do Vinícius, ja te mando.
[]´s
Segue o projeto em anexo e duas imagens, uma mostrando o Custom Creation Code e uma com quatro exemplos em execução.
No projeto, existem 4 pacotes:
painelimagem: contém a classe Main que abre os 4 frames com os exemplos.
painelimagem.imagens: contém duas imagens utilizadas nos exemplos.
painelimagem.david: contém uma classe que implementa um painel de desenho bem mais simples que o do Vinícius (ImagePanel.java), uma classe que herda de ImagePanel para fixar o arquivo de imagem (ImagePanelFundo.java) e dois JFrames, um para cada tipo de painel. No primeiro, FrameImagePanel.java, é colocado um JPanel no frame e no custom creation code (aba Code) o é usado o construtor de ImagePanel. No outro frame, FrameImagePanelFundo.java é usada a outra classe de painel de desenho (subclasse de ImagePanel) que fixa no construtor a imagem utilizada. Nesse frame, eu arrastei direto o ImagePanelFundo (O NetBeans suporta isso, desde que a classe esteja compilada).
painelimagem.vinicius: contém a mesma estrura do pacote painelimagem.david, só que usando a classe JImagePanel do Vinícius.
[]´s
Bom dia
davidbuzatto, como posso utilizar o método:
public JImagePanel(long tick, BufferedImage… imgs) {
images = new LoopImage(tick, imgs);
new Looper().start();
}
Desde já agradeço!
davidbuzatto, na classe que vc mandou JImagePanelFundo ficou assim...
import com.towel.img.LoopImage;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
public class JImagePanelFundo extends JImagePanel {
public JImagePanelFundo() {
try {
setImage(10000, new BufferedImage[]{
(ImageIO.read(getClass().getResourceAsStream("/IMAGENS/ferrar1.jpg"))),
(ImageIO.read(getClass().getResourceAsStream("/IMAGENS/mustang.jpg"))),
(ImageIO.read(getClass().getResourceAsStream("/IMAGENS/lamborghini.jpg")))
});
} catch (IOException exc) {
}
}
}
e na classe JImagePanel coloquei o método:
public final void setImage(long tick, BufferedImage... imgs) {
if (imgs == null) {
throw new NullPointerException("Buffered image cannot be null!");
}
this.images = new LoopImage(tick, imgs);
new Looper().start();
invalidate();
}
Talvez ajude alguém...

