elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  carga de imagenes y imagenes en moviemientos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: carga de imagenes y imagenes en moviemientos  (Leído 2,696 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
carga de imagenes y imagenes en moviemientos
« en: 13 Febrero 2015, 13:45 pm »

Buenas a todos !!


Estoy  viendo uno videos sobre graficos 2d en youtube  y no estoy copiando pero estoy probando lo que ellos hacen que es mas o menos lo que van a ver (lo tipe yo mismo :)por lo menos  ),

Código
  1. import java.awt.*;
  2. import java.io.*;
  3. import javax.swing.JFrame;
  4. import javax.swing.JPanel;
  5. import java.awt.image.*;
  6.  
  7.  
  8. public class Main  extends JPanel{
  9.  
  10.     int x;
  11.     int vx;
  12.     int y;
  13.     int vy;
  14.  
  15.  
  16.     public void move(){
  17.  
  18.         vy =1;
  19.         vx =1;
  20.  
  21.  
  22.         x = x+vx;
  23.         y = y+vy;
  24.  
  25.     }
  26.  
  27.  
  28.    public void paint(Graphics g){
  29.        super.paint(g);
  30.        Graphics2D g2d = (Graphics2D)g;
  31.        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
  32.             RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  33.  
  34.     Image im = ImageIO.read(new File("nave.png"));      
  35.        g2d.drawImage(im, x,y,null);
  36.     /////g2d.dispose();///
  37.    }
  38.  
  39.  
  40.    public static void main(String []args){
  41.        Main m = new Main();
  42.          JFrame f = new JFrame("ddd");
  43.          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.          f.setSize(800,800);
  45.         f.getContentPane().add(m);
  46.          f.setVisible(true);
  47.  
  48.          while(true){
  49.            m.repaint();
  50.            m.move();
  51.            try{
  52.  
  53.             Thread.sleep(25);
  54.            }catch(Exception e){}
  55.  
  56.          }
  57.    }
  58.  
  59. }
  60.  



no me reconce ImageIO , quizas puedo usar
Código
  1. .getImage()
pero por que dice que no reconoce el simbolo en la consola y si uso
Código
  1. ToolKit.getDefaultToolkit.getImage(..) , getClass().getResource("").getImage()
si no me equivoco es asi pero quisiera saber por que cuando lo hago la imagen se queda en un punto (inicialize y=0 ,x =0, no lo puse por hacerlo rapido) ,me gustaria saber que puedo hacer para que se muevan o me recomiendan algo, en los tutoriales lo hacen asi ,claro con sus cambios y no quiero copiar.



En línea

gracias por responder mis dudas
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: carga de imagenes y imagenes en moviemientos
« Respuesta #1 en: 13 Febrero 2015, 15:12 pm »

Si las imágenes están en tu proyecto, prueba obteniéndola como recurso.

Código
  1. ImageIO.read(getClass().getResource("/ruta/a/imagen"));

Nótese el slash al principio, ésto indica que se empezará a buscar desde el root: src/.

Respecto a porqué no te pinta la imagen, prueba cambiando paint por paintComponent. Para más simplicidad, puedes llamar el método move() en el método paintComponent.

Código
  1. public void paintComponent(Graphics g){
  2.        super.paintComponent(g);
  3.        Graphics2D g2d = (Graphics2D)g;
  4.        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
  5.             RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  6.        Image im = ImageIO.read(new File("nave.png"));      
  7.        g2d.drawImage(im, x,y,null);
  8.        move();
  9. }

Salu2.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: carga de imagenes y imagenes en moviemientos
« Respuesta #2 en: 13 Febrero 2015, 15:23 pm »

Añadiendo al aporte de mi compañero, hay diferencias entre paint y paintComponent, lo puedes ver en la API.

Si mal no me equivoco paint abarca todo lo del panel (pinta el panel y sus componentes) sin embargo paintComponent solo pinta el panel.

Recomiendo el uso de paintComponent frente a paint.

El porque no te reconoce ImageIO, pues muy facil, no lo importaste.

Código
  1. import javax.imageio.ImageIO;

En segundo, (no vi tu codigo entero, ya que ya tienes una respuesta de Gus) pero por lo que vi me gustaria agregar que no hagas un add en el JFrame, mas bien haz lo siguiente:

Código
  1. f.setContentPane(m);

De esta manera remplazaras el contenedor por defecto del JFrame por tu JPanel. (Actualmente lo que hacías era añadir un contenedor sobre el contenedor, mejor remplazarlo no?)

Tambien ten en cuenta que al hacer un JFrame.setSize(800,800) estas diciendo que tu JFrame mida 800,800 (incluyendo los bordes del mismo), si quieres que el panel mida 800, 800

debes hacer lo siguiente:

Código
  1. JPanel panel = new JPanel();
  2.  
  3. panel.setPreferredSize(new Dimension(800,800));
  4.  
  5. JFrame frame = new JFrame();
  6. frame.setContentPane(panel);
  7. frame.pack(); // Pack ajusta el tamaño del Frame al de sus componentes
  8.  
  9. // Recuerda que si haces un setResizable(false); esto lo tienes que hacer antes del pack() ya que setRezisable(false); modifica el tamaño tambien

Por otro lado, me gustaría saber algo que ya me esta matando (ultima mente muchos están con lo mismo)

Porque haces todo en un mismo archivo?

Por convención no  debe haber mas de una clase en un mismo archivo, amenos que la segunda clase (o tercera...) sea privada.

También tienes que evitar utilizar la encapsulacion Friendly (Encapsulacion por default, se define al no poner private, public o protected).

No crees clases sin un modificador de acceso. Las clases deben ser o Public o Private.

(Solo puede haber una clase publica por archivo)

Suerte ^^.
« Última modificación: 13 Febrero 2015, 15:27 pm por Nac-ho » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Deshabilitar carga de imagenes en webbrowser
Programación Visual Basic
rubeng 7 3,145 Último mensaje 3 Septiembre 2007, 07:45 am
por cobein
Por que no me carga carpeta de imagenes???, Java
Java
1mpuls0 2 4,516 Último mensaje 29 Mayo 2008, 07:37 am
por tongoxcore
Ayuda con carga de imágenes ...
PHP
NetStorm 2 2,087 Último mensaje 25 Agosto 2009, 02:37 am
por NetStorm
Ayuda Carga de Imagenes
Desarrollo Web
devNicolas 4 2,400 Último mensaje 21 Agosto 2014, 19:31 pm
por engel lex
¿carga de imagenes BMP en C??
Programación C/C++
Aarondct16 4 2,846 Último mensaje 17 Octubre 2016, 05:47 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines