Pessoal, não estou conseguindo entender bem a logica para carregar imagens num JFrame. Seria para um jogo, não sei qual o melhor método, pra isso.
Segue abaixo o código-fonte.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagejogo;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importjavax.swing.JFrame;/** * * @author USER */publicclassPongextendsJFrame{BufferedImageimagem;Graphicsg=imagem.createGraphics();Filearquivo=newFile("imagem.png");publicPong(){//criando janelasuper("Pong");//tamanho da janelasetSize(300,300);//localizacaosetLocationRelativeTo(null);//operacao ao fechar janelasetDefaultCloseOperation(EXIT_ON_CLOSE);//carregando imagemtry{imagem=ImageIO.read(arquivo);}catch(IOExceptionex){}}//classe de desenhoprivatevoidpaint(Graphicsg){//objeto graphicsg.drawImage(imagem,0,0,this);}publicstaticvoidmain(String[]args){Pongjanela=newPong();janela.setVisible(true);}}
Embora eu certamente ache que vale muito mais à pena você fazer seu jogo em XNA 4.0.
B
brunolfagundes
Obrigado gente. Já resolvi o problema. É que quando procuro esses materiais na internet eu acho um monte de implementações diferentes, acaba que confunde. Consertei o codigo agora. Não sei o sentido de criar um JLabel pra essa situação.
O problema agora é diferente.
Eu acho que o código roda direitinho, mas nao estou conseguindo centralizar o sprite dentro do JFrame. Aparece so uma janela em branco. Como contornar isso? Abaixo o codigo:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagejogo;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importjavax.swing.JFrame;/** * * @author USER */publicclassPongextendsJFrame{BufferedImageimagem;publicPong(){//criando janelasuper("Pong");//tamanho da janelasetSize(300,300);//localizacaosetLocationRelativeTo(null);//operacao ao fechar janelasetDefaultCloseOperation(EXIT_ON_CLOSE);//carregando imagemFilearquivo=newFile("imagem.png");//carregando imagem no buffertry{imagem=ImageIO.read(arquivo);}catch(IOExceptionex){System.out.println("Erro ao carregar imagem");}}//classe de desenhopublicvoiddesenho(Graphicsg){//objeto graphicsg.drawImage(imagem,0,0,0,0,this);}publicstaticvoidmain(String[]args){Pongjanela=newPong();janela.setVisible(true);}}
ViniGodoy
Volto a ressaltar: Leia os tutoriais do ponto v. Eles explicam certinho como trabalhar com Graphics, imagem, como fazer a animação do game e usar escrita direta. Assim vc terá um jogo fluído e funcional em pouco tempo.
Já conferi por esses sites ja, ja dei uma lida neles.
Mesmo assim não consegui corrigir o problema. Alguma outra boa alma pode me ajudar?
Uma atualização do codigo:
publicclassPongextendsJFrame{BufferedImageimagem;publicPong(){//criando janelasuper("Pong");//tamanho da janelasetSize(300,300);//localizacaosetLocationRelativeTo(null);//operacao ao fechar janelasetDefaultCloseOperation(EXIT_ON_CLOSE);//carregando imagemFilearquivo=newFile("C:\\Documents and Settings\\USER\\Meus documentos\\NetBeansProjects\\Jogo\\src\\jogo\\imagem.PNG");try{//carregando imagem no bufferimagem=ImageIO.read(arquivo);}catch(IOExceptionex){Logger.getLogger(Pong.class.getName()).log(Level.SEVERE,null,ex);}}//classe de desenhopublicvoiddesenho(Graphicsg){Graphics2Dg2=(Graphics2D)g.create();g2.drawImage(imagem,100,100,null);}publicstaticvoidmain(String[]args){Pongjanela=newPong();janela.setVisible(true);}}
B
brunolfagundes
Sem querer descobri que o meu método desenho() deve se chamar Paint().
Mesmo assim, obrigado pela ajuda!