NetBeans - Plano de fundo

7 respostas
C

Tem como colocar uma imagem como plano de fundo em um painel utilizando o netBeans. De que forma?

7 Respostas

jLady

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
:wink:

davidbuzatto

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

ViniGodoy

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.

davidbuzatto

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

davidbuzatto

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




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!

S

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...

Criado 25 de outubro de 2010
Ultima resposta 19 de jul. de 2013
Respostas 7
Participantes 5