Como faço para criar uma Image correctamente?e sucessivamente c
desenha-la em um JFrame?Mas queria usar o Graphics.draw(image,x,y,observer);
Usando o draw
10 Respostas
Não precisa criar um frame, basta criar um BufferedImage:
BufferedImage image = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
Graphics2D graphic = image.createGraphics();
graphic.drawLine(0, 0, 10, 10);
blz ,mas cara como faço para colocar a minha imagem???neste buffer??
Dá uma olhada em como essa classe foi implementada:
http://www.guj.com.br/posts/list/56248.java#295271
Mas, basicamente é só fazer:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g.create();
g2d.draw(image,x,y,null);
g2d.dispose();
}
Se for sobrescrever um JPanel, ao invés de um JFrame ou JDialog, sobrescreva o método paintComponent ao invés do método paint (como está no exemplo do link que te passei).
Aquela variável Image já tem que ter sido carregada previamente. Para fazer isso, vc usa o seguinte comando:
Mas é importante que você não carregue a imagem dentro do método paint. Caso contrário, vc vai ler a imagem várias vezes do disco, desnecessariamente. Leia uma única vez, guarde numa propriedade da sua classe, e desenhe quantas vezes for preciso.
Se vc quiser fazer uma espécie de filme ou um jogo, é melhor também se informar sobre as classes BufferStrategy e ler esse material:
http://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html
http://www.cokeandcode.com/node/6
valeu Vinny muito bom,a proposito pegando a imagem atráves
URL imageUrl = this.getClass().getClassLoader(). \
getResource(“gtk-no.png”);
onde salvo a imagem?Estou usando o netBeans
e obrigado de novo!!
A imagem tem que estar dentro do classpath da sua aplicação. Se eu não me engano, o netbeans pode criar uma pasta de resource, que está dentro do classpath também. Caso contrário, só jogue em um dos pacotes do seu código. Nesse caso, se vc jogar no pacote com.fabio.em.images o getResource ficará:
getClass().getResource(“com/fabio/em/images/suaImagem.png”);
Esse método é recomendado pq a sua imagem também poderá ser inserida posteriormente dentro do jar. Se você quer que a imagem venha de um arquivo fora do classpath, passe um File ao invés de um URL para o método read, que funciona do mesmo jeito.
valeu Vinny!Mais uma coisa,fiz uma aplicação que pega alguns arquivos jpg e os mostra em um JFrame.
O paint começa a mostrar as imagens só quando dou um clique no JFrame,como faço para contornar este problema?
Após selecionar a imagem, chame o método repaint().
Isso forçará o frame a se redesenhar.
cara desculpas ainda não consegui carregar a imagem,bom o meu projeto é o seguinte
nome progeto = Imagem
nome pacote = com
nome foto image.jpg
image = ImageIO.read(getClass().getResource(“Imagens\Imagem.jpg”));
nao consegue encontrar! 
Onde você viu \ no código que eu postei?
Você tem que usar a /
O getResource() é independente de sistema operacional, até pq ele funciona com .jar também.
Outra coisa, tenha certeza que vc respeitou as letras maiúsculas e minúsculas, caso contrário não funciona mesmo.
Se sua imagem estiver no dentro do pacote com, o comando vai ser:
A imagem tem que estar dentro do seu classpath não dentro do seu projeto.
Nem todas as pastas do projeto estão no classpath.
Aeee Vinny!!Valeu mesmo!!Quando crescer quero ser como vc!!
:lol: