Colocar uma imagem como plano de fundo em uma Janela[RESOLVIDO]

20 respostas
guisantogui

Pessoal, pode ateh ser uma pergunta besta, mas não sei como definir o plano de fundo da minha janela com uma imagem!
Alguem saberia fazer isso??

Vlw!

20 Respostas

Hebertbc

Olha deve te um jeito certo, mais eu geralmente coloco como icon de um jLabel

D

Dá uma olhada nesse link:
http://www.guj.com.br/posts/list/11002.java
Um amigo meu leu o tópico e conseguiu!
:slight_smile:
Até mais…

ViniGodoy

dina:
Dá uma olhada nesse link:
http://www.guj.com.br/posts/list/11002.java
Um amigo meu leu o tópico e conseguiu!
Até mais…

Cuidado, além de ser um tópico extremamente antigo, ele mostra um método muitíssimo ineficiente, já que está carregando a imagem toda vez, dentro do paint.

O ideal mesmo é fazer como descrito aqui:
http://www.guj.com.br/posts/list/56248.java#295271

D

Valeu pela correção ViniGodoy!
:slight_smile:

higornucci

Rapaz :smiley:

Eu estou mexendo com isso agorinha

public void showImagem(File imagem) throws IOException { BufferedImage image = ImageIO.read(imagem); String imageInfo = "Dimenções: "+image.getWidth()+"x"+ image.getHeight()+" Bands: "+ image.getRaster().getNumBands(); ImageIcon icon = new ImageIcon(image); JLabel imageLabel = new JLabel(icon); JFrame frame = new JFrame(); frame.setTitle("Mostrando Imagem: " + imagem); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JScrollPane(imageLabel), BorderLayout.CENTER); contentPane.add(new JLabel(imageInfo), BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setSize(800,800); frame.setVisible(true); }

pega esse código ai …

guisantogui

Gente não conheço muito essa area de inserção de imagens e veio muitos post’s de uma vez só (obrigado), mas meio que me perdi, poderiam ser mais especificos?

Vlw!

guisantogui

Em off agora - Bem que o JAVA devia ter uma maneira mais pratica de fazer isso neh! :confused:

ViniGodoy

Se você baixar a classe do link que eu postei, simplesmente faça:

JImagePanel pnlImagem = new JImagePanel("c:\imagem.gif"); seuFrame.add(pnlImagem);

guisantogui

Olha qdo eu postei na Main isso

public static void main(String args[]){
        JanelaMenuPrincipal jmp = new JanelaMenuPrincipal();
        jmp.setVisible(true);
        
        JanelaCadastroDePessoas jcdp = new JanelaCadastroDePessoas();
        try {
            JImagePanel jip = new JImagePanel("D:\Pisom\JAVA - projetos\GRÁFICA\Projeto\Grafica\TelaFundo.jpg");
            jcdp.add(jip);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }    
}
}
}

na linha onde eu indico o local da imagem ele da um erro: ilegal escape character!

PS: aparece 4 vezes o ilegal escape character
:wink:

guisantogui

não sei por que, mas qdo eu troquei \ por \ ele funcionou!

mas esta gerando uma exceção

11/03/2010 16:40:30 Classes.Main main SEVERE: null javax.imageio.IIOException: Can't create an ImageInputStream! at javax.imageio.ImageIO.read(ImageIO.java:1280) at Interface.JImagePanel.<init>(JImagePanel.java:42) at Interface.JImagePanel.<init>(JImagePanel.java:53) at Classes.Main.main(Main.java:21)

guisantogui

Agora q eu coloquei a imagem, pois soh tinha definido a pasta (como eu sou esperto aff), para de lançar a excessão, mas a imagem não aparece! :cry:

evertonsilvagomesjav

ViniGodoy:
Se você baixar a classe do link que eu postei, simplesmente faça:

JImagePanel pnlImagem = new JImagePanel("c:\imagem.gif"); seuFrame.add(pnlImagem);

Vini tem como passar uma url pra sua classe? Pq quando gerado um jar ele nao busca o caminho do src.

M

Basta adicionar um novo construtor. Como o ImageIO também aceita uma URL fica assim:

public JImagePanel(URL imgSrc) throws IOException
 {

    this(ImageIO.read(imgSrc));

}
evertonsilvagomesjav

Marco tava dando uma olhada na Classe tem um construtor que recebe um BufferedImage ai da pra passar pro Buffered o retorno do metodo ImageIO.read() e passar pro construtor o Buffered =D, funcionou legal aqui. Agora uma pergunta a Imagem esta preenchida no Panel inteiro tem como preencher em menor quantidade? Tipo uma imagem menor? Outra coisa meuFrame.add(imagePanel) nao funciona agora quando coloco meuFrame.setContentPane(imagePanel) funciona…

M

Bem observado, nem tinha visto. :slight_smile:

Existe a opção CENTER de preenchimento. É isso que você está procurando?

Deve ser algum problema no gerenciador de leiaute. Você está usando o gerenciador padrão do JFrame? Coloque aqui o trecho onde você adiciona os componentes para vermos.

guisantogui

Fiz tudo “aparentemente” correto, mas não gera exceção nem exibe a imagem, será q o tamanho da imagem influencia?

guisantogui

Ainda com problemas nesse JPanel com imagem, alguem tem uma dica sobre como implementar isso?

Vlw!

pedroroxd

Mais facil colocar um jPanel e setar a imagem dentro dele…
Ou até mesmo de uma jLabel…
Não sei se é “correto” mas funciona!
=D

guisantogui

gente olha como eu fiz, pq naum ta dando certo?

painel = new javax.swing.JPanel();
try{
JImagePanel imagem = new JImagePanel("D:\TelaFundo.jpg");
painel.add(imagem);
}
catch(IOException ioe){ ioe.printStackTrace();
}

O que ta havendo?

guisantogui

Consegui resolver, mas de outra maneira!

link para o post onde eu consegui!

http://www.guj.com.br/posts/list/202017.java

:D:D:D:D:D

Criado 11 de março de 2010
Ultima resposta 25 de mar. de 2010
Respostas 20
Participantes 8