Вы находитесь на странице: 1из 3

TECNOLOGICO TOPICOS AVANZADOS DE PROGRAMACION ^OfECV^® Instituto

NACIONAL Ingenierla en Sistemas Computacionales de la Costa Grande Tecnologico


SEP
DE MEXICO Unidad III “Programacion concurrente (Multi Hilos).” de la Costa Grande

Viernes 04 de Mayo de 2018


Ejmplo: ISCTAPU3EJEM004

Nombre del programa: ISCTAPU3EJEM004.java Fecha


de programacion: 04 de Mayo de 2018 Autor :
Objetivo : Ejemplo de la utilizacion de hilos aplicado a una animacion de texto
tipo cadena, aplicando interfaz grafica GUI

import java.awt.*; import java.awt.event.*; import javax.swing.*;

class MiCanvas extends Canvas {


// Declaracion de Variables locales public static
final int DERECHA = 1; public static final int
IZQUIERDA = -1; private int x = 10; private int y
= 10;
private String Cadena = "TECNOLOGICO";
private int Direccion = DERECHA; private int
Incremento = 10; private FontMetrics Fuente;

// Declaracion del metdos MiCanvas que hace el llamado a la // clase


super public MiCanvas! ){ super! );
}

// Declaracion del metodo paint para repintar el grafico public void


paint(Graphics g){
g.drawString(Cadena, x, y);
Fuente = g.getFontMetrics! );
}

// Declaracion del metodo saltar o moverse hacia la direccion // del


movimiento del texto public void Saltar! ){
if (Fuente == null) return;
x + = (Incremento * Direccion);
int w = Fuente.stringWidth(Cadena);
Dimension d = getSize( ); int cw = d.width;
if (x + w > cw){
x = cw - w;
TECNOL0GICO TOPICOS AVANZADOS DE PROGRAMACI0N ^<AECA^® Instituto
NACIONAL Ingenieria en Sistemas Computacionales de la Cosla Grande Tecnologico
SEP
DE MEXICO Unidad III “Programacion concurrente (MultiHilos).” de la Costa Grande

Direccion = IZQUIERDA;
} else if (x < 0){ x = 0;
Direccion = DERECHA;

Instructor: Carlos Baltazar Oliva Enero - Junio 2018 19


}
repaintC );
}
}

public class ISCTAPU3EJEM004 extends JFrame implements Runnable { MiCanvas


canvas = new MiCanvasC ):
Thread HiloAnimacion;
private int timer = 200:

public ISCTAPU3EJEM004(String caption) {


super(caption):

JButton Salir = new JButtonO'Salir"):

Salir.addActionListenerCnew ActionListenerC ){
public void actionPerformedCActionEvent e){
setVisible(false); dispose! );
System.exit(O);
}
}):
Container Contenedor = getContentPaneC );
Contenedor.setLayoutCnew BorderLayoutC ));
Container buttonPane = new Container! ):
buttonPane.setLayout(new FlowLayout! )): buttonPane.
add(Salir);
Contenedor. add! "North", buttonPane):
Contenedor. add! "Center", canvas);

addWindowListenerCnew WindowAdapter! ){
public void windowClosingCWindowEvent e){
setVisible(false); disposeC );
System.exit(O);
}
});

setBounds(10, 10, 400, 200); setVisible(true):


HiloAnimacion = new Thread(this);
HiloAnimacion.start! );

public void run( ){


TECNOL0GICO TOPICOS AVANZADOS DE PROGRAMACI0N ^OfECV^® Instituto
NACIONAL Ingenieria en Sistemas Computacionales de la Costa Grande Tecnologico
SEP
DE MEXICO Unidad III “Programacion concurrente (MultiHilos).” de la Costa Grande

if (HiloAnimacion == null) return;


Thread HiloTemporal = Thread.currentThread( ); while (HiloTemporal == HiloAnimacion) {
try{
canvas.SaltarC );
HiloAnimacion.sleep(timer);
} catch (InterruptedException exception) {
System.out.println(exception);

Instructor: Carlos Baltazar Oliva Enero - Junio 2018 20


}
}
}

public static void main(String[] Args){


ISCTAPU3EJEM004 Objeto = new ISCTAPU3EJEM004CISCTAPU3EJEM004");
}

Resultado

Practica ISCTAPU3PRAC004
Tomando como base el ejemplo ISCTAPU3EJEM004.java, modificiue para que:
1) A1 iniciar primero debe leer el texto que desea visualizar desde el teclado
2) Adicionar las opciones de cambiar la interfaz grafica en relacion con el texto:
a) Color de fuente
b) Tipo de fuente
c) Tamano de fuente
3) Color de fondo de la interfaz
4) Visualizar la fecha y hora en la parte inferior de la interfaz, tomadas desde el sistema de la computadora

Instructor: Carlos Baltazar Oliva Enero - Junio 2018 21