Hilos | Práctica 4 | Java Swing | Ticker

 


Introducción

Dentro de un programa, un hilo es un flujo de control. Los hilos múltiples y los procesos múltiples son diferentes. La diferencia clave es que los hilos múltiples en un programa comparten el mismo estado y se ejecutan en el mismo espacio de direcciones.

Un programa de java puede tener más de un hilo de ejecución. Los hilos son derivados de la clase Thread. Todos los hilos tienen atributos básicos: un cuerpo, un estado y una prioridad.

En esta práctica número 4 desarrollaremos una programa usando un objeto de tipo Thread en donde observaremos sus cualidades y comportamiento en la solución de las problemáticas que se nos presenten.

Objetivos

1: Programar el esqueleto del programa acorde a las necesidades

2: Codificar la ejecución del hilo

3: Diseñar un programa funcional

Desarrollo

Para comenzar a desarrollar el programa primero importe las librerías de java swing para poder utilizar un JFrame y la JLabel.

Posteriormente utilice el esqueleto del programa de hilos que incluye una GUI en dónde declare la etiqueta, el hilo, el String, la cadena de caracteres, contador, sleep y unas variables adicionales.
Para el caso del constructor inicializo el JFrame definiendo un título, dimensiones, que sea visible y que se finalizara al cerrar la ventana, cree el hilo y lo inicializo.

En el apartado de ejecución del hilo cree un bucle while en el cual toma como valor el contador de cuantas veces queremos que se repita hasta que se hace 0, en su interior encontramos un algoritmo el cual hace los cambios entre letras en el arreglo de caracteres, primero se retira la última letra de la etiqueta, después entramos a un bucle for en el cual recorre las posiciones del resto de caracteres y finalmente volvemos a insertar la letra en la posición inicial, posteriormente imprimimos estos movimientos en la etiqueta. Finalizando el funcionamiento del hilo, verificamos que no existan errores con el try y el catch, en caso de existir alguno se finaliza el programa.

Como ultimo punto en el main solo llamamos al Ticker

Resultado


Código

import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;


public class Ticker extends JFrame implements Runnable {
    JLabel l;
    Thread hilo;
    String  a = "HOLA MUNDO ";
    char [] c = a.toCharArray();
    int count;
    int sleep1;
    int x,y;
    
    public Ticker(int howmany,int sleep){
        super("Tickets");
        this.setSize(400,200); 
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLayout(null);
        l = new JLabel("----------");
        l.setBounds(120, 50, 100, 50);
        this.add(l);
        count = howmany;
        sleep1 = sleep;
        hilo=new Thread(this); //debe ser de las ultimas lin. del constructor
        hilo.start(); //debe ser de las ultimas lineas del constructor
    }
    @Override
    public void run() {
        while(count-->0){
            x=c[c.length -1];
            for(y=c.length -1;y>0;y--){
                c[y]=c[y-1];
            }
            c[0]=(char) x;
            l.setText(String.valueOf(c));
            try{
                Thread.sleep(sleep1);
            }
            catch(Exception e){
                return;
            }
        }
    }
        public static void main(String[] args) {
        new Ticker(40,500);
    }
}

Video de referencia




Comentarios

Entradas populares