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
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import java.io.IOException;
import java.io.InputStream;
import java.security.Principal;
import javax.imageio.ImageIO;
public class Motor extends JFrame implements Runnable{
Image[] img;
Image fondo;
InputStream imgStream;
Timer timer1;
private BufferStrategy estrategia;
int numeroImagen=0;
public Motor() {
super("STEPPER MOTOR SIMULATOR");
JDesktopPane principal = new JDesktopPane();
// declaracion de variables del GUI
JLabel modo = new JLabel("MODO");
JLabel labelAutomatico = new JLabel("AUTOMATICO");
JButton botonAutomatico = new JButton("RUN");
JButton botonStop= new JButton("STOP");
JLabel labelManual = new JLabel("MANUAL:");
JLabel labelRPM = new JLabel("RPM");
JLabel direccion = new JLabel("DIRECCION");
final JTextField rpm = new JTextField();
JLabel labelGrados = new JLabel("GRADOS");
DefaultComboBoxModel dirModelo = new DefaultComboBoxModel(new String[]{"LEFT" ,"RIGTH"});
final JComboBox dir = new JComboBox(dirModelo);
final JTextField grados = new JTextField();
JButton run = new JButton("RUN");
JPanel simulador = new JPanel();
// Agregando a nuestro Desktop
principal.setBackground(new Color(180,180,180));
principal.add(modo);
principal.add(labelAutomatico);
principal.add(botonAutomatico);
principal.add(botonStop);
principal.add(labelManual);
principal.add(labelRPM);
principal.add(direccion);
principal.add(rpm);
principal.add(labelGrados);
principal.add(grados);
principal.add(dir);
principal.add(run);
principal.add(simulador);
// Dando Ubicacion
modo.setBounds(120, 30, 40, 30);
labelAutomatico.setBounds(20, 100, 1000, 20);
botonAutomatico.setBounds(120,100, 70, 20);
botonStop.setBounds(200, 100, 70, 20);
labelManual.setBounds(20, 160, 80, 20);
labelRPM.setBounds(50, 190, 30, 20);
labelGrados.setBounds(150, 190, 50, 20);
direccion.setBounds(250, 190, 100, 20);
rpm.setBounds(50, 230, 50, 20);
grados.setBounds(150, 230, 50, 20);
dir.setBounds(250, 230, 60, 20);
run.setBounds(120, 290, 120, 20);
simulador.setBounds(380, 30, 228, 231);
// Frame
this.add(principal, BorderLayout.CENTER);
this.setResizable(false);
this.setSize(650, 390);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
/*
botonAutomatico.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cargaImagen();
repaint();
run();
}
});
//***********************
botonStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
*/
}// fin del constructor
public static void main(String[] args){
// se crea un objeto para inicializar
Motor obj = new Motor();
}// fin del main
public void cargaImagen() {
img = new Image[36];
try {
imgStream = Principal.class.getResourceAsStream("Imagenes/0.jpg");
fondo = ImageIO.read(imgStream);
for (int i = 0; i < 36; i++) {
imgStream = Principal.class.getResourceAsStream("Imagenes/"+i+".jpg");
img[i] = ImageIO.read(imgStream);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
if(numeroImagen <= 35) {
numeroImagen++;
}
else {
numeroImagen = 0;
}
}
public void paint(Graphics g) {
Graphics g3 = (Graphics2D) estrategia.getDrawGraphics();
g3.drawImage(img[numeroImagen], 380, 30, 228, 231, null);
estrategia.show();
repaint();
}
}
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
(http://thumbs.subefotos.com/62eb97d13aaae2cea25a2b0ff066a3fco.jpg) (http://subefotos.com/ver/?62eb97d13aaae2cea25a2b0ff066a3fco.jpg)
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 )
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 )
sube todas las img en un archivo comprimido a Dropbox, Box, o Drive. Y pasa el link para descargarlo, para poder testear.
Saludos.
Hola gracias por contestar....
las subi a 4shared
http://www.4shared.com/rar/AiAE_tgj/Imagenes.html
y gracias
public void paint(Graphics g) {
Graphics g3 = (Graphics2D) estrategia.getDrawGraphics();
g3.drawImage(img[numeroImagen], 380, 30, 228, 231, null);
estrategia.show();
repaint();
}
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...
public void cargaImagen() {
img = new Image[36];
try {
imgStream = Principal.class.getResourceAsStream("Imagenes/0.jpg");
fondo = ImageIO.read(imgStream);
for (int i = 0; i < 36; i++) {
imgStream = Principal.class.getResourceAsStream("Imagenes/"+i+".jpg");
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.
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...