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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton  (Leído 7,398 veces)
Nsc-Hack

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« en: 15 Junio 2013, 10:08 am »

Hola intento simular la rotacion de un motor tengo 36 imagenes que van de 10 en 10 grados  que al pasar una tras otra dan efecto de rotacion.... necesito que al precionar el boton automatico me simule dicha rotacion  con eso ya me guio en la parte manual que pide grados de rotacion y revoluciones por minuto

SOlO


este es el codigo que tengo, si me pudieran ayudar diciend donde me equivoco y como podria implementarlo

Código
  1.  
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import javax.swing.*;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Image;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.image.BufferStrategy;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.security.Principal;
  14. import javax.imageio.ImageIO;
  15.  
  16.  
  17.  
  18. public class Motor extends JFrame implements Runnable{
  19.  
  20.  
  21.  
  22.    Image[] img;
  23.    Image fondo;
  24.    InputStream imgStream;
  25.    Timer timer1;
  26.    private BufferStrategy estrategia;
  27.    int numeroImagen=0;
  28.  
  29.  
  30.    public Motor() {
  31.  
  32.        super("STEPPER MOTOR SIMULATOR");
  33.        JDesktopPane principal = new JDesktopPane();
  34.  
  35.        // declaracion de variables del GUI
  36.  
  37.        JLabel modo = new JLabel("MODO");
  38.        JLabel labelAutomatico = new JLabel("AUTOMATICO");
  39.        JButton botonAutomatico = new JButton("RUN");
  40.        JButton botonStop= new JButton("STOP");
  41.        JLabel labelManual = new JLabel("MANUAL:");
  42.        JLabel labelRPM = new JLabel("RPM");
  43.        JLabel direccion = new JLabel("DIRECCION");
  44.        final JTextField rpm = new JTextField();
  45.        JLabel labelGrados = new JLabel("GRADOS");
  46.        DefaultComboBoxModel dirModelo = new DefaultComboBoxModel(new String[]{"LEFT" ,"RIGTH"});
  47.        final JComboBox dir = new JComboBox(dirModelo);
  48.        final JTextField grados = new JTextField();
  49.        JButton run = new JButton("RUN");
  50.        JPanel simulador = new JPanel();
  51.  
  52.  
  53.  
  54.        // Agregando a nuestro Desktop
  55.        principal.setBackground(new Color(180,180,180));
  56.        principal.add(modo);
  57.        principal.add(labelAutomatico);
  58.        principal.add(botonAutomatico);
  59.        principal.add(botonStop);
  60.        principal.add(labelManual);
  61.        principal.add(labelRPM);
  62.        principal.add(direccion);
  63.        principal.add(rpm);
  64.        principal.add(labelGrados);
  65.        principal.add(grados);
  66.        principal.add(dir);
  67.        principal.add(run);
  68.        principal.add(simulador);
  69.  
  70.        // Dando Ubicacion
  71.        modo.setBounds(120, 30, 40, 30);
  72.        labelAutomatico.setBounds(20, 100, 1000, 20);
  73.        botonAutomatico.setBounds(120,100, 70, 20);
  74.        botonStop.setBounds(200, 100, 70, 20);
  75.        labelManual.setBounds(20, 160, 80, 20);
  76.        labelRPM.setBounds(50, 190, 30, 20);
  77.        labelGrados.setBounds(150, 190, 50, 20);
  78.        direccion.setBounds(250, 190, 100, 20);
  79.        rpm.setBounds(50, 230, 50, 20);
  80.        grados.setBounds(150, 230, 50, 20);
  81.        dir.setBounds(250, 230, 60, 20);
  82.        run.setBounds(120, 290, 120, 20);
  83.        simulador.setBounds(380, 30, 228, 231);
  84.  
  85.  
  86.        // Frame
  87.  
  88.  
  89.  
  90.        this.add(principal, BorderLayout.CENTER);
  91.        this.setResizable(false);
  92.        this.setSize(650, 390);
  93.        this.setLocationRelativeTo(null);
  94.        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  95.        this.setVisible(true);
  96.  
  97.  
  98.        /*
  99.        
  100.         botonAutomatico.addActionListener(new ActionListener() {
  101.             public void actionPerformed(ActionEvent e) {
  102.         cargaImagen();
  103.         repaint();
  104.         run();      
  105.             }
  106.         });
  107.         //***********************
  108.          botonStop.addActionListener(new ActionListener() {
  109.             public void actionPerformed(ActionEvent e) {
  110.                    
  111.                
  112.             }
  113.         });
  114.        
  115.         */
  116.  
  117.    }// fin del constructor
  118.  
  119.  
  120.    public static void main(String[] args){
  121.        // se crea un objeto para inicializar
  122.        Motor obj = new Motor();
  123.  
  124.    }// fin del main
  125.  
  126.    public void cargaImagen() {
  127.  
  128.        img = new Image[36];
  129.        try {
  130.            imgStream = Principal.class.getResourceAsStream("Imagenes/0.jpg");
  131.            fondo = ImageIO.read(imgStream);
  132.            for (int i = 0; i < 36; i++) {
  133.                imgStream = Principal.class.getResourceAsStream("Imagenes/"+i+".jpg");
  134.                img[i] = ImageIO.read(imgStream);
  135.  
  136.            }
  137.  
  138.        } catch (IOException e) {
  139.            e.printStackTrace();
  140.        }
  141.    }
  142.  
  143.  
  144.  
  145.        public void run() {
  146.  
  147.  
  148.          if(numeroImagen <= 35) {
  149.                numeroImagen++;
  150.            }
  151.          else {
  152.                numeroImagen = 0;
  153.            }
  154.  
  155.  
  156.    }
  157.  
  158.  
  159.    public void paint(Graphics g) {
  160.        Graphics g3 = (Graphics2D) estrategia.getDrawGraphics();
  161.        g3.drawImage(img[numeroImagen], 380, 30, 228, 231, null);
  162.        estrategia.show();
  163.        repaint();
  164.  
  165.    }
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172. }
  173.  
  174.  

estos son los errores que me muestra:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at Motor.paint(Motor.java:180)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:825)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:802)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:802)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:745)
   at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:725)
   at javax.swing.RepaintManager.access$1000(RepaintManager.java:46)
   at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1668)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
   at java.awt.EventQueue.access$400(EventQueue.java:81)
   at java.awt.EventQueue$2.run(EventQueue.java:633)
   at java.awt.EventQueue$2.run(EventQueue.java:631)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at Motor.paint(Motor.java:182)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:825)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:802)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:802)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:745)
   at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:725)
   at javax.swing.RepaintManager.access$1000(RepaintManager.java:46)
   at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1668)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
   at java.awt.EventQueue.access$400(EventQueue.java:81)
   at java.awt.EventQueue$2.run(EventQueue.java:633)
   at java.awt.EventQueue$2.run(EventQueue.java:631)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


anexo una imagen de lo que quiero hacer...

Gracias de antemano



necesito mostrar en ese JPanel las imagenes una tras otra cuando presione el boton RUN. les agradezco su ayuda....  solo con un pequeño consejo yo ya resuelvo lo demas


Pd: volvi a hacer el codigo de ceros (sin usar el editor de netbeans, para que quedara mas entendible el codigo )


« Última modificación: 20 Junio 2013, 09:49 am por Debci » En línea

Nsc-Hack

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« Respuesta #1 en: 17 Junio 2013, 00:43 am »

Creo que no estoy utilizando bn Los Threads o la parte de mostrar las imagenes....

Pd: volvi a hacer el codigo de ceros (sin usar el editor de netbeans, para que quedara mas entendible el codigo )


« Última modificación: 17 Junio 2013, 01:16 am por Nsc-Hack » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« Respuesta #2 en: 17 Junio 2013, 16:55 pm »

sube todas las img en un archivo comprimido a Dropbox, Box, o Drive. Y pasa el link para descargarlo, para poder testear.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Nsc-Hack

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« Respuesta #3 en: 18 Junio 2013, 02:09 am »

Hola gracias por contestar....

las subi a 4shared

Código:
http://www.4shared.com/rar/AiAE_tgj/Imagenes.html

y  gracias

En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« Respuesta #4 en: 18 Junio 2013, 05:37 am »


Código
  1.    public void paint(Graphics g) {
  2.        Graphics g3 = (Graphics2D) estrategia.getDrawGraphics();
  3.        g3.drawImage(img[numeroImagen], 380, 30, 228, 231, null);
  4.        estrategia.show();
  5.        repaint();
  6.  
  7.    }

En la linea marcada, el la propiedad estrategia no esta definido en ningún lado y como es un objeto obtiene un valor null por defecto. g3 no esta apuntando a ningun objeto por lo tanto (tiene un valor nulo), al intentar invocar los metodos de g3 te lanza la excepción java.lang.NullPointerException

Ese método tiene un parámetro que en ningún momento utilizas...


Código
  1. public void cargaImagen() {
  2.  
  3.        img = new Image[36];
  4.        try {
  5.            imgStream = Principal.class.getResourceAsStream("Imagenes/0.jpg");
  6.            fondo = ImageIO.read(imgStream);
  7.            for (int i = 0; i < 36; i++) {
  8.                imgStream = Principal.class.getResourceAsStream("Imagenes/"+i+".jpg");
  9.                img[i] = ImageIO.read(imgStream);

Principal.class.... La única clase del proyecto se llama Motor y en esa linea estas llamando a la clase Principal que no existe. También en la ruta de la imagen, la extensión jpg va en mayuscula, ya que en la extensión de las imagenes la tienes en mayuscula.


También hay muchísimas cositas malas. Ese código lo haz tomado de alguien y lo haz modificado, o algo similar, espero equivocarme.

Te recomiendo que intentes hacerlo tu mismo, si sabes utilizar Thread y sabes lo que estas haciendo en cada linea entonce lo harás sin ningún problema.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Nsc-Hack

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Ayuda Java mostrar Secuencia de Imagenes en JPanel al presionar un boton
« Respuesta #5 en: 19 Junio 2013, 04:39 am »

mmm ya ... :D  que tonto...

gracias

el codigo si lo hice yo... solo que la parte de mostrar imagenes me base en un sprite que tenia... y  tome parte de ese código....


ya lo demás creo que no voy a tener problema....  y muchas gracias... y ps lo hice en muy poco tiempo...


lo de Hilos si lo manejos mas o meno (±), pero bueno voy a terminar eso muchas gracias...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines