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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Cómo animar JLabel?¿
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo animar JLabel?¿  (Leído 9,832 veces)
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Cómo animar JLabel?¿
« en: 6 Octubre 2009, 03:34 am »

Hola, les platico mi problema. De un JTextField extraigo el String y este a su vez lo alamaceno en un JLabel para posteriormente "animarlo" usando Thread, pero no me funciona. Solo quiero saber si por lo menos estoy usando el metodo correcto, por ahora no tengo mi código a la mano, pero espero subirlo para explicarme mejor, pero si alguien puede orientarme se lo agradeceré.

Saludos.

PD. Al decir animarlo me refiero a que tengo su posicion xi, yi, xf, yf. Y utilizo el metodo setBounds(xi, yi, xf, yf);, quiero mover mi JLabel (TEXTO) hasta la posicion yf.



« Última modificación: 7 Octubre 2009, 03:48 am por Darhius » En línea

abc
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Cómo animar JLabel?¿
« Respuesta #1 en: 7 Octubre 2009, 03:48 am »

Bien este es el código que tengo, si alguien puede ayudarme o por lo menos alguna sugerencia para hacer lo que quier (Animar un text)

Gracias


Código:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class animacionTexto extends JFrame{

private JButton botAnimar;
    private JPanel panel;
    private JLabel etiqueta;
    private int xI = 10;
    private int yI = 50;
    private int xF = 120;
    private int yF = 50;
    private hilo h;
    
    public static void main(String args[]) {
        new animacionTexto().setVisible(true);
    }

    public animacionTexto() {
        initComponents();
    }

    private void initComponents() {

        panel = new JPanel();
        botAnimar = new JButton();
        etiqueta = new JLabel();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new FlowLayout());

        panel.setPreferredSize(new Dimension(500, 100));
        panel.setLayout(null);

        botAnimar.setText("Animar");
        botAnimar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                animar();
            }
        });
        panel.add(botAnimar);
        botAnimar.setBounds(10, 10, 100, 30);
        
        etiqueta.setText("Hilo");
        etiqueta.setForeground(Color.blue);
        panel.add(etiqueta);
        etiqueta.setBounds(xI, yI, 50, 25);
        

        getContentPane().add(panel);

        pack();
    }

private void animar() {
try{
h = new hilo(100);
h.start();
}catch(Exception e){
h.stop();
}
}

public void moverX(int x){
if((xI+x)<=xF){
etiqueta.setBounds((xI+x),yI,50,25);
}
}

}

class hilo extends Thread {
 
private int dist=0;
private int mseg;
private animacionTexto aT;
 
public hilo(int mseg)
{
dist = 0;
mseg = mseg;
}
 
        public void run()
{
try{
         for(int y=0; y<17; y++){
        sleep(mseg);
        aT.moverX(dist+=25);
         }
            }catch(InterruptedException e){
 
            }
}
 
}




« Última modificación: 7 Octubre 2009, 16:56 pm por Darhius » En línea

abc
Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Cómo animar JLabel?¿
« Respuesta #2 en: 7 Octubre 2009, 04:12 am »

Hola, primeramente deberias ordenar mucho mas tu code por que hay cosas que se hacen dificiles de entender, ademas estas poniendo atributos en la parte de abajo de la clase y eso incomoda en la lectura de el code.

Bueno, con respecto al code veo que la clase hilo en el metodo run() hace referencia a la ventana animacionTexto , lo cual veo que en ningun momento se la enviases, me explico la clase de la ventana en tu caso esta creando el hilo pero tu estas moviendo algo que no existe todavia alli dentro en la clase hilo para ello cuando vayas a crear el hilo enviale la referencia de la ventana y asi si la podras usar dentro de la clase hilo ejemplo:

Código
  1. private void animar() {
  2. try{
  3. h = new hilo(100, this);
  4. h.start();
  5. }catch(Exception e){
  6. h.stop();
  7.        }
  8. }

Y en en la clase hilo agregas esto:

Código
  1. class hilo extends Thread {
  2.  
  3. private int dist=0;
  4. private int mseg;
  5. private animacionTexto aT;
  6.  
  7. public hilo(int mseg, animacionTexto aT)
  8. {
  9. dist = 0;
  10. mseg = mseg;
  11.                this.aT=aT;
  12. }
  13.  
  14.        public void run()
  15. {
  16. try{
  17.         for(int y=0; y<17; y++){
  18.        sleep(mseg);
  19.        aT.moverX(dist+=25);
  20.         }
  21.            }catch(InterruptedException e){
  22.  
  23.            }
  24. }
  25.  
  26. }
  27.  

Otra cosa mas ... en la calse animacionTexto tienes un metodo void hilo(int mseg) que no lo estas usando para nada.

Tambien pon los errores que te salen al compilar.

Saludos y cualquier duda comenta ;)
En línea





Mi blog:
http://amerikanocls.blogspot.com
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Cómo animar JLabel?¿
« Respuesta #3 en: 7 Octubre 2009, 16:45 pm »

Hola, si perdón por el desorden del código, andaba un poco de prisa se me olvido borrar algunos metodos y variables como las qe mencionas y algunos metodos los use como alternativa de la clase hilo, voy a intentar como me lo sugieres, a ver que tal

Gracias

Saludos
En línea

abc
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Cómo animar JLabel?¿
« Respuesta #4 en: 8 Octubre 2009, 03:36 am »

Hola nuevamente, he seguido lo que me has dicho AmeRiK@nO, pero me produce el mismo resultado con el metodo alternativo, el cual lo que hacia era "como" si solo cambiara la etiqueta de lugar pero sin mostrar animacion, es decir como si solo hiciera:

Código:
etiqueta.setBounds(xI, yI, 50, 25);

y lo cambiara por

Código:
etiqueta.setBounds(x,F yF, 50, 25);

Repito sin mostrar ninguna "animacion".

Me puedes aconsejar hacer algo para intentar, o algun metodo ya existente en Java que me pueda ayudar  :rolleyes: o alguna otra alternativa.


Saludos y gracias por la respuesta
En línea

abc
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Desplazamiento de JButton o JLabel
Java
c0der 7 13,854 Último mensaje 21 Diciembre 2010, 21:30 pm
por Debci
JLabel y JTextField demasiado pequeños.
Java
MauroMasciar 5 5,225 Último mensaje 15 Marzo 2011, 19:10 pm
por MauroMasciar
Poner un JLabel donde estaba un un JButton
Java
goditozor 2 3,018 Último mensaje 17 Mayo 2011, 04:33 am
por 1mpuls0
jLabel
Java
mapers 2 2,070 Último mensaje 29 Mayo 2011, 22:36 pm
por mapers
Animar botones
Desarrollo Web
darkraider 2 1,895 Último mensaje 4 Julio 2011, 14:52 pm
por darkraider
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines