[RESOLVIDO]Colocar imagem plano de fundo de uma JFrame

Boa noite a todos do guj,

Estou tentando colocar uma imagem de fundo em um código JFrame, tentei vários meios já mas nenhum deu certo…

Bom dia, u iniciante em java mas vou tentar te ajudar.

Ate o opnto que eu sei para colocr uma imagem em um jframe, tem que ser atraves de um jlabel e depois adicionar este jlabel ao jframe, vamos ao codigo.

criando a imagem:

Icon bug = new ImageIcon(getClass().getResource(“bug1.gif”));

criando o jlabel:

private JLabel jlabel3;
jlabel3 = new JLabel();
jlabel3.setIcon(bug); // aqui eu adiciono a imagem ao jlabel

adicionando o jlabel ao jframe:

add(jlabel3);

depois vc pode criar um metodo para capturar a dimensão da tela e redimencionar seu label com a iamgem como bem intender.

Espero ter ajudado, sou iniciante me java mas se não nos ajudarmos não evoluimos.

JLabel não serve para deixar uma imagem de background pois não temos como adicionar componentes nele…

uma ideia seria vc implementar o seu JPanel, sobrescrevendo o método paintComponents… aí vc consegue dar um drawImage passando a sua imagem por parâmetro

Opa, me desculpe se falei besteira eriko, rsrsrs

[quote=erico_kl]JLabel não serve para deixar uma imagem de background pois não temos como adicionar componentes nele…

uma ideia seria vc implementar o seu JPanel, sobrescrevendo o método paintComponents… aí vc consegue dar um drawImage passando a sua imagem por parâmetro[/quote]

É o JLabel eu sabia que não dava por causa disso ai mesmo que vc falou…
como ficaria o método paintComponents, pq acho que até com ele eu ja tentei fazer e acho que não consegui…XD

Se alguem mais puder me ajudar…

basicamente tu deve pegar o Graphics, criar uma cópia, e passar a imagem:

[code]public class FundoBg extends JPanel {
private BufferedImage img = null;
private int x = 0;
private int y = 0;

public FundoBg(String urlImg) throws IOException    {  
    this.img =  ImageIO.read(new File(urlImg));  
}  

@Override  
public void paintComponent(Graphics g) {  
    super.paintComponent(g);        
    Graphics gr = (Graphics2D)g.create();  
    gr.drawImage(img, x, y,this.getWidth(),this.getHeight(),this);  
    gr.dispose();     
}  

}[/code]
by ViniGodoy…

[quote=erico_kl]basicamente tu deve pegar o Graphics, criar uma cópia, e passar a imagem:

[code]public class FundoBg extends JPanel {
private BufferedImage img = null;
private int x = 0;
private int y = 0;

public FundoBg(String urlImg) throws IOException    {  
    this.img =  ImageIO.read(new File(urlImg));  
}  

@Override  
public void paintComponent(Graphics g) {  
    super.paintComponent(g);        
    Graphics gr = (Graphics2D)g.create();  
    gr.drawImage(img, x, y,this.getWidth(),this.getHeight(),this);  
    gr.dispose();     
}  

}[/code]
by ViniGodoy…[/quote]

So para esclarecer, isso dai é uma inner class? O que são aquelas variáveis? Aonde eu vou colocar o link da imagem?

Obrigado

vc se refere às variáveis x e y? São as coordenadas iniciais para a pintura da imagem, dê uma olhada na documentação do método drawImage
você pode deixá-la como InnerClass, mas sugiro criar uma classe separada, para vc poder utilizar em outros casos…

[quote=erico_kl]vc se refere às variáveis x e y? São as coordenadas iniciais para a pintura da imagem, dê uma olhada na documentação do método drawImage
você pode deixá-la como InnerClass, mas sugiro criar uma classe separada, para vc poder utilizar em outros casos…[/quote]

kkkkkk, to meio perdido aqui, como pode ver…XD

com essa classe eu devo instancia-la na classe que eu tinha, passar o link da imagem e blz. Mas aonde faço isso???
kkkkkkkk

[quote=Scobar20][quote=erico_kl]vc se refere às variáveis x e y? São as coordenadas iniciais para a pintura da imagem, dê uma olhada na documentação do método drawImage
você pode deixá-la como InnerClass, mas sugiro criar uma classe separada, para vc poder utilizar em outros casos…[/quote]

kkkkkk, to meio perdido aqui, como pode ver…XD

com essa classe eu devo instancia-la na classe que eu tinha, passar o link da imagem e blz. Mas aonde faço isso???
kkkkkkkk[/quote]
você instancia como um JPanel (repare que essa classe nada mais é do que um painel com o método paintComponent sobrescrito) e aí vc usa onde quiser.
Você pode sobrescrever esse método direto no JFrame? Pode, mas com JPanel você terá mais mobilidade.

ou seja, sua LoginVIEW vai ter um painel dentro (podendo ser o próprio contentPane do JFrame) e este terá a imagem de fundo como background.

[quote=erico_kl][quote=Scobar20][quote=erico_kl]vc se refere às variáveis x e y? São as coordenadas iniciais para a pintura da imagem, dê uma olhada na documentação do método drawImage
você pode deixá-la como InnerClass, mas sugiro criar uma classe separada, para vc poder utilizar em outros casos…[/quote]

kkkkkk, to meio perdido aqui, como pode ver…XD

com essa classe eu devo instancia-la na classe que eu tinha, passar o link da imagem e blz. Mas aonde faço isso???
kkkkkkkk[/quote]
você instancia como um JPanel (repare que essa classe nada mais é do que um painel com o método paintComponent sobrescrito) e aí vc usa onde quiser.
Você pode sobrescrever esse método direto no JFrame? Pode, mas com JPanel você terá mais mobilidade.

ou seja, sua LoginVIEW vai ter um painel dentro (podendo ser o próprio contentPane do JFrame) e este terá a imagem de fundo como background.[/quote]

Cara funfou certinho, brigadao erico_kl
vou deixar essa classe salva certinha pra usa-la sempre que necessario…XD

Boa tarde pessoal.

Peço desculpas por estar postando em um tópico já antigo e resolvido, mas preciso de uma ajuda.

Sou novo na programação Java e estou com dúvida na hora de instanciar o jPanel com a classe descrita aqui.

Quando tento fazer: jPanel1 = new Paint(“nomeDoArquivo.jpg”);
Um erro é exibido, dizendo o seguinte: “Unreported exception IOException; must be caught or declared to be thrown”

Pelo o que eu entendi, ele está dizendo que a Exceção não está declarada.
Mas não é exatamente isso que fizemos no “public Paint(String urlImg) throws IOException”?

Aguardo resposta.

Falta o try/catch onde voce for utilizar.

Ok, funcionou perfeitamente. Obrigado.

Sou novo aqui, e quando tento implementar o código acima aparece o seguinte

ago 29, 2015 9:10:17 AM br.com.pasp.arena.FundoBg
GRAVE: null
javax.imageio.IIOException: Can’t read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at br.com.pasp.arena.FundoBg.(FundoBg.java:22)
at br.com.pasp.pokemon.Principal.main(Principal.java:17)
Alguém poderia me ajudar

Consegui resolver, eu queria pegar a imagem direto da minha pasta no java, mas não da
Alguém poderia me dizer se dar para usar uma imagem do mesmo pacote do projeto?

O meu ta dando erro no new paint oque eu faço qual e a importação algo do tipo ?