Anda di halaman 1dari 18

package Graficos; import java.awt.*; import java.awt.event.

*; // Clase de control del ejemplo class Grafico01 extends Frame { // Contructor de la clase public java1517() { this.setTitle( "Graficos, En Java" ); this.setSize( 400,300 ); this.setVisible( true ); // Clase anidada que permite terminar la ejecucin de la animacin this.addWindowListener( // Definicin de la clase annima para controlar el cierre de // la ventana new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se concluye el programa System.exit( 0 ); } } ); } // Mtodo de control del programa public static void main( String[] args ) { // Se instancia un objeto de esta clase new java1517(); } // Se sobrecarga el mtodo paint() public void paint( Graphics g ) { // Trasladamos el origen de coordenadas que se sita en la // esquina superior izquierda, para evitar el problema que se // produce con insets. g.translate( this.getInsets().left,this.getInsets().top ); // Obtenemos la lista completa de fuentes del sistema String[] fuentes = GraphicsEnvironment.getLocalGraphicsEnvironment(). getAvailableFontFamilyNames(); // Fijamos una fuente cualquiera, la quinta de la lista por ejemplo, // le cambiamos el estilo a Negrita y su tamao a 14 puntos g.setFont( new Font( fuentes[4],Font.PLAIN,14 ) );

// Obtenemos la altura de la fuente seleccionada int alto = g.getFontMetrics().getHeight(); // Fijamos la coordena Y utilizando la altura de la fuente como valor int y = alto; // Presentamos un rtulo general para la presentacin String rotulo = "Algunas de las fuentes disponibles son:"; g.drawString( rotulo,5,y ); // Cambiamos a color rojo g.setColor( Color.red ); // Presentamos una pequea lista de todas las fuentes del sistema // indicando el nombre que tiene almacenado el sistema para ellas, // le cambiamos el estino a Negrita y Oblicua for( int i=78; i < 84; i++ ) { g.setFont( new Font( fuentes[i],Font.BOLD | Font.ITALIC,18) ); alto = g.getFontMetrics().getHeight(); g.drawString( fuentes[i], 160-(g.getFontMetrics().stringWidth(fuentes[i]))/2,y+=alto ); } // Cambiamos a color azul g.setColor( Color.blue ); // Volvemos a coger la fuente del rtulo y le cambiamos el estilo a // fuente Normal de 15 puntos g.setFont( new Font( fuentes[4],Font.PLAIN,15 ) ); alto = g.getFontMetrics().getHeight(); // Presentamos otro rtulo y += alto; g.drawString( "Informacin sobre la fuente de este texto: ",5,y ); // Presentamos informacin sobre la fuente actual y += alto; g.drawString( "" + g.getFont(),5,y ); // Presentamos otro rtulo y += 2*alto; g.drawString( "Anaximandro Fernandez Guerrero: ",5,y ); // Creamos un array de letras para presentarlo char aTexto[] = {'g','r','a','f','i','c','o','s',' ','e','n',' ','J','a','v','a'}; y += alto; // Presentamos en pantalla el array de letras, saltndonos el // primero y no presentado el ltimo g.drawChars( aTexto,0,16,5,y ); }

package Graficos; //Dibujar lneas, rectngulos u valos con base en la entrada del usuario. import java.awt.Graphics; import javax.swing.*; public class Grafico02 extends JApplet { int opcion; // la opcion del usuario en cuanto a cul figura dibujar // inicializar el subprograma, obteniendo la opcin del usuario public void init() { String entrada; // la entrada del usuario // obtener la opcin del usuario entrada = JOptionPane.showInputDialog("Escriba 1 para dibujar lneas\n" + "Escriba 2 para dibujar rectngulos\n" + "Escriba 3 para dibujar valos\n" ); opcion = Integer.parseInt( entrada ); // convertir entrada en int } // fin del mtodo init // dibujar figuras en el fondo del subprograma public void paint( Graphics g ) { super.paint( g ); // llamar al mtodo paint heredado de JApplet for ( int i = 0; i < 30; i++ ) // iterar 10 veces (0-9) { switch ( opcion ) // determinar la figura a dibujar { case 1: // dibujar una lnea g.drawLine( 10, 10, 250, 10 + i * 10 ); break; // fin de procesamiento de case case 2: // dibujar un rectngulo g.drawRect( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i * 10 ); break; // fin de procesamiento de case

* 10 );

case 3: // dibujar un valo g.drawOval( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i break; // fin de procesamiento de case

incorrecto i * 15 );

default: // dibujar cadena indicando que se escribi un valor g.drawString( "Se escribi un valor incorrecto",10, 20 +

} // fin de instruccin switch } // fin de instruccin for } // fin del mtodo paint } // fin de la clase PruebaSwitch

package Graficos; import java.awt.*; import java.awt.event.*; // Clase de control del ejemplo class Grafico03 extends Frame { // Funcin de control de la aplicacin public static void main( String[] args ) { // Se instancia un objeto de la clase new java1516(); } // Contructor de la clase public Grafico03 () { this.setTitle( "Graficos, En Java" ); this.setSize( 475,275 ); this.setVisible( true ); // Clase anidada que permite terminar la ejecucin de la animacin this.addWindowListener( // Definicin de la clase annima para controlar el cierre de // la ventana new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se concluye el programa System.exit( 0 ); } } ); } // Se sobrecarga el mtodo paint() public void paint( Graphics g ){ g.setColor( Color.red ); // Trasladamos el origen de coordenadas que se sita en la // esquina superior izquierda, para evitar el problema que se // produce con insets. De este modo el origen de coordenadas s // que lo dejamos situado en la zona cliente del objeto Frame // que es la que se utiliza para pintas g.translate( this.getInsets().left,this.getInsets().top ); // Lnea simple g.drawLine( 10,0,50,50 ); g.setColor( Color.black ); g.drawString( "drawLine",10,62 ); g.setColor( Color.red );

// Se crean dos arrays de coordenadas para pintar una // polilnea int x1Datos[] = {80,130,80,130}; int y1Datos[] = {0,50,50,0}; g.drawPolyline( x1Datos,y1Datos,4 ); g.setColor( Color.black ); g.drawString( "drawPolyline",70,62 ); g.setColor( Color.red ); // Rectngulo g.drawRect( 150,0,50,50 ); g.setColor( Color.black ); g.drawString( "drawRect",150,62 ); g.setColor( Color.red ); // Rectngulo relleno g.fillRect( 220,0,50,50 ); g.setColor( Color.black ); g.drawString( "fillRect",225,62 ); g.setColor( Color.red ); // Rectngulo redondeado g.drawRoundRect( 300,0,50,50,10,10 ); g.setColor( Color.black ); g.drawString( "drawRoundRect",280,62 ); g.setColor( Color.red ); // Rectngulo redondeado relleno g.fillRoundRect( 385,0,50,50,10,10 ); g.setColor( Color.black ); g.drawString( "fillRoundRect",375,62 ); // Pinta un rectngulo 3D, sobresaliendo de la pantalla // No parece demasiado 3D g.setColor( Color.gray );//draw the 3D stuff in gray g.draw3DRect( 10,90,55,25,true ); // Rectngulo 3D, pulsado g.draw3DRect( 70,90,50,25,false ); g.setColor( Color.black ); g.drawString( "draw3DRect",30,140 ); // Rectngulo 3D relleno. Se ha puesto un fondo gris // con lo cual se puede apreciar mucho mejor el efecto // de tres dimensiones // Fondo gris g.setColor( Color.gray ); g.fillRect( 145,75,130,55 ); g.fill3DRect( 155,90,50,25,true ); // Rectngulo 3D relleno, pulsado g.fill3DRect( 215,90,50,25,false ); g.setColor( Color.red ); // De todos modos, la apariencia de tres dimensiones // con 3DRect no es demasiado buena, porque es necesario // seleccionar muy bien la paleta de colores para que // se genere la ilusin de 3D g.setColor( Color.black ); g.drawString( "fill3DRect",180,140 ); g.setColor( Color.red ); // Pinta un ngulo de 255 grados inscrito en un rectngulo g.drawRect( 300,77,50,50 );

g.drawArc( 300,77,50,50,0,225 ); g.setColor( Color.black ); g.drawString( "drawArc",305,140 ); g.setColor( Color.red ); // Angulo relleno de 255 grados inscrito en un rectngulo g.drawRect( 385,77,50,50 ); g.fillArc( 385,77,50,50,0,225 ); g.setColor( Color.black ); g.drawString( "fillArc",395,140 ); g.setColor( Color.red ); // Elipse, con el eje grande horizontal g.drawOval( 10,165,50,25 ); // Crculo g.drawOval( 70,150,50,50 ); g.setColor( Color.black ); g.drawString( "drawOval",35,218 ); g.setColor( Color.red ); // Elipse rellena, con el eje grande vertical g.fillOval( 170,150,25,50 ); // Crculo relleno g.fillOval( 210,150,50,50 ); g.setColor( Color.black ); g.drawString( "fillOval",185,218 ); g.setColor( Color.red ); // Polgono int x2Datos[] = {300,350,300,350}; int y2Datos[] = {150,200,200,150}; g.drawPolygon( x2Datos,y2Datos,4 ); g.setColor( Color.black ); g.drawString( "drawPolygon",290,218 ); g.setColor( Color.red ); // Polgono relleno int x3Datos[] = {385,435,385,435}; int y3Datos[] = {150,200,200,150}; g.fillPolygon( x3Datos,y3Datos,4 ); g.setColor( Color.black ); g.drawString( "fillPolygon",385,218 ); } }

Muestra un grafico estatico

package Graficos; import java.awt.*; import java.awt.event.*; // Clase de control del ejemplo class Grafico04 extends Frame { // Referencia a la imagen Image imagen; // Constructor de la clase public java1518() { this.setTitle( "Graficos, En Java" ); this.setSize( 275,250 ); // Recogemos en la variable "imagen" el fichero de imagen que // se indica, y que se supone situado en el mismo directorio y // disco que la clase del ejemplo imagen = Toolkit.getDefaultToolkit().getImage( "monitor.gif" ); // Se hace visible el Frame, que en la pantalla da origen a // la ventana, aunque la primera imagen no es visible en el // mismo momento en que aparece la ventana en pantalla, porque // hasta que se invoque por primera vez el mtodo paint(), no // se colocar una imagen en el contendor this.setVisible( true ); // Clase annima anidada que permite terminar la ejecucin del // programa, controlando el botn de cierre del Frame this.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se sale al sistema System.exit( 0 ); } } ); } public static void main( String[] args ) { // Se instancia un objeto de la clase new Grafico04 (); } // Se sobrecarga el mtodo para pintar la imagen public void paint( Graphics g ) { // Se traslada el origen para evitar el efecto del borde g.translate( this.getInsets().left,this.getInsets().top ); // Ahora se pinta la imagen a la mitad de su tamao g.drawImage( imagen,0,0, imagen.getWidth(this)/2,imagen.getHeight(this)/2,this ); } }

Muestra un grafico en movimiento

import java.awt.*; import java.awt.event.*; // Clase de control del ejemplo class Grafico05 extends Frame { // Referencia a la imagen Image imagen; public java1519() { this.setTitle( "Graficos, En Java" ); this.setSize( 275,250 ); // Recogemos en la variable "imagen" el fichero de imagen que // se indica, y que se supone situado en el mismo directorio y // disco que la clase del ejemplo imagen = Toolkit.getDefaultToolkit().getImage( "monitor.gif" ); // Se hace visible el Frame, que en la pantalla da origen a // la ventana, aunque la primera imagen no es visible en el // mismo momento en que aparece la ventana en pantalla, porque // hasta que se invoque por primera vez el mtodo paint(), no // se colocar una imagen en el contendor this.setVisible( true ); // Clase annima anidada que permite terminar la ejecucin del // programa, controlando el botn de cierre del Frame this.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se sale al sistema System.exit( 0 ); } } ); } public static void main( String[] args ) { // Se instancia un objeto de la clase new Grafico05(); } // Se sobrecarga el mtodo para pintar la imagen public void paint( Graphics g ) { // Se traslada el origen para evitar el efecto del borde g.translate( this.getInsets().left,this.getInsets().top ); // Se utiliza un objeto MediaTracker para bloquear la tarea hasta // que la imagen est cargada completamente, antes de intentar // pintarla en pantalla. Si la carga de la imagen falla en el

// intervalo de un segundo, el programa se termina. Sin el uso de // un objeto de tipo MediaTracker, si la imagen es pequea, apenas // se notar el uso de MediaTracker, pero s que es importante a la // hora de cargar imgenes muy grandes o gran cantidad de ellas MediaTracker tracker = new MediaTracker( this ); // Se aade la imagen a la lista del tracker tracker.addImage( imagen,1 ); try { // Se bloquea la tarea durante un segundo, mientras se // intenta la carga de la imagen. En caso de que la imagen // sea mayor que la que se utiliza en este ejemplo, puede // ser necesario aumentar este tiempo if( !tracker.waitForID(1,1000) ) { System.out.println( "Fallo en la carga de la imagen" ); System.exit( 0 ); } } catch( InterruptedException e ) { System.out.println( e ); } // Ahora se pinta la imagen a la mitad de su tamao normal g.drawImage( imagen,0,0, imagen.getWidth(this)/2,imagen.getHeight(this)/2,this ); // Y se presenta en pantalla this.repaint(); } }

package Graficos; import java.awt.*; import java.awt.event.*; class Grafico06 extends Frame { // Referencias a los objetos de tipo Image que se van a presentar en // pantalla Image imagenFuente,imagen1,imagen2,imagen3,imagen4,imagen5; // Contructor de la clase public Grafico06() { this.setTitle( "Graficos, En Java" ); this.setSize( 415,260 ); // Se carga la imagen desde el fichero que se indique, que se // supone situado en el directorio actual del disco duro imagenFuente = Toolkit.getDefaultToolkit().getImage( "monitor.gif" ); // Se crean cinco instancias escaladas de la imagen anterior, todas // del mismo tamao pero utilizando un algoritmo diferente en el // escalado de cada una de ellas, para

imagen1 = imagenFuente.getScaledInstance( Image.SCALE_AREA_AVERAGING ); imagen2 = imagenFuente.getScaledInstance( Image.SCALE_SMOOTH ); imagen3 = imagenFuente.getScaledInstance( Image.SCALE_FAST ); imagen4 = imagenFuente.getScaledInstance( Image.SCALE_REPLICATE ); imagen5 = imagenFuente.getScaledInstance( Image.SCALE_DEFAULT );

136,120, 136,120, 136,120, 136,120, 136,120,

// Se hace visible el marco de la ventana. En este momento todava no // es visible ninguna de las imgenes que se han creado anteriormente this.setVisible(true); // Clase anidada que permite terminar la ejecucin de la animacin this.addWindowListener( // Definicin de la clase annima para controlar el cierre de // la ventana new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se concluye el programa System.exit( 0 ); } } ); } // Mtodo de control del programa public static void main( String[] args ) { // Se instancia un objeto de esta clase new Grafico06(); } // Mtodo paint() sobreescrito public void paint( Graphics g ) { // Se traslada el origen para evitar el efecto del borde g.translate( this.getInsets().left,this.getInsets().top ); // Se utiliza un objeto MediaTracker para bloquear la tarea hasta // que las imgenes estn cargadas completamente, antes de intentar // pintarlas en pantalla. MediaTracker tracker = new MediaTracker( this ); // Se aaden las imgenes a la lista del tracker tracker.addImage( imagenFuente,1 ); tracker.addImage( imagen1,1 ); tracker.addImage( imagen2,1 ); tracker.addImage( imagen3,1 ); tracker.addImage( imagen4,1 ); tracker.addImage( imagen5,1 ); try{ // Se bloquea la tarea durante el tiempo necesario para la carga // de todas las imgenes tracker.waitForAll(); } catch( InterruptedException e ) { System.out.println( e ); } // Comprobamos si ha habido algn error en la carga de las imgenes // y su manipulacin. Si todo ha ido bien, las cinco imgenes // aparecern en pantalla simultneamente

if( !tracker.isErrorAny() ) { g.drawImage( imagen1,0,0,this ); g.drawImage( imagen2,137,0,this ); g.drawImage( imagen3,275,0,this ); g.drawImage( imagen4,70,120,this ); g.drawImage( imagen5,210,120,this ); } else { System.out.println( "Error en la carga de imgenes" ); System.exit( 1 ); } } }

package Graficos; import java.awt.*; import java.awt.event.*; class Grafico07 extends Frame { Image imagenFuente; // Imagen cargada de disco int iniAncho; int iniAlto; // Ancho y Alto para cada imagen de la animacin int finAncho; int finAlto; // Valores del borde para el objeto contenedor int insetArriba; int insetIzqda; // Referencias a objetos utilizados en el doble buffer Image imgDobleBuffer; Graphics contextoDobleBuffer; // Indicador del uso o no del doble buffer boolean usarDobleBuffer = true; // Mtodo de control del programa public static void main( String[] args ) { // Se instancia un objeto de esta clase Grafico07 obj = new java1521(); // Se declaran las variables locales que indican el desplazamiento // y la escala de las imgenes double delta = 0; double escala = 0; // Se utiliza el doble buffer o no, dependiendo de los valores que se // hayan introducido en la lnea de comandos. Por defecto, se utiliza // el doble buffer, y cualquier otro argumento en la lnea de // comandos deshabilitar su uso if( args.length == 0 ) { obj.usarDobleBuffer = true;

System.out.println( "Doble Buffer Activado" ); } else { obj.usarDobleBuffer = false; System.out.println( "Doble Buffer Desactivado" ); } // Bucle de control de la animacin, que seguir funcionando, hasta // que se cierre la ventana con el botn de cierre del marco de esa // ventana while( true ) { // Control de la direccin en que se realiza la animacin, de // forma que vaya creciendo hasta su tamao normal y luego vuelva // a decrecer if( escala >= 0.999 ) delta = -0.005; if( escala <= 0.015 ) delta = 0.005; // Se establece el ancho y alto para la nueva imagen que se va a // presentar en la animacin obj.finAncho = (int)( escala*obj.iniAncho ); obj.finAlto = (int)( escala*obj.iniAlto ); // Se presenta la imagen obj.repaint(); // Se actualiza la escala para la siguiente imagen escala += delta; // Se retrasa la presentacin, de forma que la animacin se // encuentre en un rango aproximado de 20 imgenes por segundo try { Thread.currentThread().sleep( 50 ); } catch( InterruptedException e ) { System.out.println( e ); } }

// Contructor de la clase public Grafico07() { // Se carga la imagen desde el fichero que se indique, que se // supone situado en el directorio actual del disco duro imagenFuente = Toolkit.getDefaultToolkit().getImage( "monitor.gif" ); // Se utilza un objeto MediaTracker para bloquear la tarea hasta // que la imagen se haya cargado o hayan transcurrido 10 segundos // desde que se inicia la carga MediaTracker tracker = new MediaTracker( this ); tracker.addImage( imagenFuente,1 ); try { if( !tracker.waitForID( 1,10000 ) ) { System.out.println( "Error en la carga de la imagen" ); System.exit( 1 ); } } catch( InterruptedException e ) { System.out.println( e ); } // La imagen ya est cargada, as que se establece la anchura y

// altura de la ventana, para que sus dimensiones se adecen a la // imagen iniAncho = imagenFuente.getWidth( this ); iniAlto = imagenFuente.getHeight( this ); // Se hace visible el Frame this.setVisible( true ); // Se obtienen los datos de insets del objeto, para que sean // compensados en la presentacin de las imgenes insetArriba = this.getInsets().top; insetIzqda = this.getInsets().left; // Se usan las dimensiones de insets y el tamao de la imagen // fuente para establecer el tamao total del Frame this.setSize( insetIzqda+iniAncho,insetArriba+iniAlto ); this.setTitle( "Graficos, En Java" ); this.setBackground( Color.yellow ); // Creamos una imagen para el uso del doble buffer, que ser la que // se utilice en el intercambio para la renderizacin de la imagen // en el buffer oculto. Tambin se obtiene el contexto grfico con // el que se va a pintar imgDobleBuffer = this.createImage( iniAncho,iniAlto ); contextoDobleBuffer = imgDobleBuffer.getGraphics(); // Clase anidada que permite terminar la ejecucin de la animacin this.addWindowListener( // Definicin de la clase annima para controlar el cierre de // la ventana new WindowAdapter() { public void windowClosing( WindowEvent evt ) { // Se concluye el programa System.exit( 0 ); } } ); } // Se sobreescribe el mtodo update() para eliminar el borrado // innecesario de la pantalla y el parpadeo que originara este // borrado. Esto requiere que el mtodo paint() sea el que controle // el borrado de la pantalla public void update( Graphics g ) { paint( g ); } // Mtodo paint() sobreescrito public void paint( Graphics g ) { // Si se est utilizando el doble buffer if( usarDobleBuffer ) { // Se vuelca en pantalla la imagen que previamente se haba // construido en el buffer oculto g.drawImage( imgDobleBuffer,insetIzqda,insetArriba,this ); // Se escala y pinta la siguiente imagen en el buffer oculto // utilizando las variables de instancia "finAncho" y "finAlto" // para determinar el tamao de esa imagen. De esta forma // cuando se vuelva a invocar a paint() la imagen estar lista // para su presentacin en pantalla. contextoDobleBuffer.clearRect( 0,0,iniAncho,iniAlto ); contextoDobleBuffer.drawImage( imagenFuente,0,0,finAncho,finAlto,this );

} else { g.clearRect( insetIzqda,insetArriba,iniAncho,iniAlto ); g.drawImage( imagenFuente, insetIzqda,insetArriba,finAncho,finAlto,this); } }

import java.awt.*; import java.awt.event.*; import javax.swing.*; // Implementa un adaptador annimo public class GUIada { public static void main(String [] args) { JFrame v = new JFrame("Graficos en Java"); v.addWindowListener( new WindowAdapter () { public void windowClosing(WindowEvent e) { System.exit(0); } } ); v.getContentPane().add(new VentanaBalon()); v.setSize(300,300); v.setVisible(true); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; public class VentanaBalon extends JPanel implements ActionListener { Balon balon; JButton creceB; JButton decreceB; public VentanaBalon() { creceB = new JButton("Crece"); decreceB = new JButton("Decrece"); balon = new Balon(20,150,150); setLayout(new FlowLayout()); add(creceB); add(decreceB); creceB.addActionListener(this); decreceB.addActionListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g); balon.display(g); } public void actionPerformed(ActionEvent e) { if (e.getSource() == creceB)

balon.cambia(10); else balon.cambia(-10); repaint(); } } import java.awt.*; public class Balon { protected int radio; protected int x,y; public Balon(int n, int vx, int vy) { radio = n; x = vx; y = vy; } public void cambia(int n) { radio += n; } public void display(Graphics g) { g.drawOval(x-radio,y-radio,radio*2,radio*2); } } Grficos que muestra por pantalla mensajes en movimiento

package Graficos; import java.awt.*; import java.applet.Applet; public class Persiana extends Applet implements Runnable { Image imagenFondo; Image offI; Graphics offG; int posicion; String texto[]; Font font; Font font1; Font font2; Font font3; boolean puedePintar; Thread thrd; MediaTracker mdt; public void init() { mdt = new MediaTracker( this ); // Instanciacin de los objetos fuente que vamos a utilizar durante // la presentacin del texto en su desplazamiento por la persiana font = new Font( "Arial",0,15 ); font1 = new Font( "Helv",1,23 ); font2 = new Font( "TimesNewRoman",1,30 ); font3 = new Font( "Arial",1,16 ); // Cadenas de texto correspondientes al primer grupo de informacin // que se va a presentar en la ventana

texto[0] texto[1] texto[2] texto[3] texto[4] texto[5] texto[6] texto[7] texto[8]

= = = = = = = = =

"Este Tutorial de Java proporciona suficientes conocimientos"; "para que, tanto los programadores noveles como aquellos que ya"; "conocen las bondades del lenguaje Java, puedan acercarse en un"; "caso y profundizar en el otro, en los ms diversos aspectos del"; "lenguaje. Se recorren casi todas las caractersticas de Java,"; "desde las ms sencillas como puede ser la descripcin de los"; "tipos soportados por el lenguaje, hasta las ms complicadas"; "como la implementacin de un entorno cliente-servidor o el"; "desarrollo de un modelo de arquitectura Modelo-Vista completo.";

// Informacin que se presentar a continuacin del ttulo // del segundo bloque de informacin de la persiana texto[9] = "Se hace un profundo recorrido por el Abstract Window Toolkit,"; texto[10] = "presentado todos los elementos que lo componen en su actual"; texto[11] = "versin, con mltiples lneas de cdigo fuente para que el"; texto[12] = "navegante pueda ir comprobando cmo se usan y cmo Java"; texto[13] = "utiliza los recursos que pone en manos del programador."; texto[14] = "Tambin hay mltiples applets Java en funcionamiento a lo"; texto[15] = "largo del Tutorial, de forma que se puede ir comprobando"; texto[16] = "la apariencia que presentan los applets sobre el browser que"; texto[17] = "estemos utilizando."; // Bloque texto[18] texto[19] texto[20] texto[21] final de informacin = "Como compendio a todo lo desarrollado en este Tutorial de"; = "Java, se presentan varias aplicaciones autnomas y algunos"; = "applets listos para utilizar, con toda la informacin"; = "necesaria para su implementacin y uso.";

// Recuperamos la imagen que se va a utilizar como fondo de la // cadena que represente el ttulo principal de la persiana imagenFondo = getImage( getCodeBase(),"fondo.gif" ); try { offI = createImage( 700,55 ); offG = offI.getGraphics(); } catch( Exception e ) { offG = null; } return; }

public void update( Graphics g ) { if( puedePintar ) paint( g ); }

public void paint( Graphics g ) { if( offG != null ) { paintApplet( offG ); g.drawImage( offI,0,0,this ); return; } paintApplet( g ); }

public void paintApplet( Graphics g ) { // Presentamos la imagen de fondo y el ttulo principal que // queremos asignar a la infromacin que va a ir presentando // la persiana. // Para hacer un poco ms atractiva la visualizacin del ttulo // hacemos que aparezca una especie de sombra de la cadena de // texto. Para ello, simplemente la volvemos a escribir pero // desplazada g.setColor( Color.black ); g.fillRect( 0,0,600,700 ); g.setFont( font2 ); g.drawImage( imagenFondo,0,-posicion,this ); g.setColor( Color.white ); g.drawString( "Tutorial de Java",200,50-posicion ); g.setColor( Color.blue ); g.drawString( "Turorial de Java",198,48-posicion ); g.setColor( Color.orange ); g.setFont( font1 ); g.fillRect( 130,60-posicion,190,24 ); g.setColor( Color.black ); g.drawString( "Presentacin",150,80-posicion ); g.setColor( Color.white ); g.setFont( font ); for( int i=0; i < 9; i++ ) g.drawString( texto[i],5,105+i*19-posicion ); // Creamos otro rectngulo de color para colocar el ttulo que // encabeza al grupo de cadenas que van a seguir desplazndose // por la persiana g.setColor( Color.white ); g.fillRect( 120,265-posicion,180,26 ); g.setColor( Color.red ); g.setFont( font1 ); g.drawString( "AWT",180,287-posicion ); g.setColor( Color.white ); g.setFont( font ); for( int j=9; j < 18; j++ ) g.drawString( texto[j],5,140+j*19-posicion ); // Presentamos el siguiente grupo de informacin, creando una // cabecera para indicar de qu se trata la informacin que va a // aparecer en la persiana g.setColor( Color.red ); g.fillRect( 120,471-posicion,200,30 ); g.setColor( Color.white ); g.setFont( font1 ); g.drawString( "Ejemplos",165,493-posicion ); g.setColor( Color.white ); g.setFont( font ); for( int j=18; j < 22; j++ ) g.drawString( texto[j],5,177+j*19-posicion ); // Esta es la misma informacin que la del principio g.setFont( font2 ); g.drawImage( imagenFondo,0,600-posicion,this ); g.setColor( Color.white ); g.drawString( "Tutorial de Java",200,650-posicion ); g.setColor( Color.blue ); g.drawString( "Tutorial de Java",198,648-posicion ); }

public void start() { // Creamos un nuevo thread y lo arrancamos thrd = new Thread( this ); thrd.start(); } public void stop() { thrd.stop(); } public void run() { for( puedePintar=false; true; puedePintar=false ) { try { puedePintar = true; repaint(); // Si estamos al principio, alargamos un poco la espera if( posicion == 0 ) { Thread.currentThread(); Thread.sleep( 5000 ); } posicion++; // Cuando lleguemos al final del texto, volvemos al // principio, para repetir todos los mensajes if( posicion == 600 ) posicion = 0; Thread.currentThread(); // Aqui podemos hacer ms rpido o ms lento el // desplazamiento del texto por la persiana Thread.sleep( 100 ); } catch( InterruptedException e ) { ; } } }

// El constructor del applet se limita a crear el array de texto que // contendr todas las cadenas o lneas de texto que se irn pasando // por la ventana public Persiana() { texto = new String[22]; } } //------------------------------------------ Final del fichero Persiana.java

Anda mungkin juga menyukai