domingo, 28 de agosto de 2011

Como Programar en Java: Ejercicio 4.1 A

Aquí esta el ejercicio 4.1 A de Como Programar en Java séptima edición.

package com.jlm.ccb.ejercicios.capitulo4;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Objeto que crea un panel con una figura.
 * Ejercicio 4.1 A
 * @author LorettoTG
 * @version 1.0
 *
 */
public class PanelDibujoEsquina extends JPanel {
    /**
     * Las clases que implementan este interfaz son susceptibles de ser
     * serializadas (es decir, las instancias de estas clases pueden
     * guardarse y leerse en/de disco -o cualquier otro dispositivo de
     * entrada/salida-). Al serializar lo que sucede es que los atributos
     * del objeto se convierten en cadenas de bytes y se guardan en el
     * disco. Para leer un objeto, se leen las cadenas de bytes y se
     * reconstruye el objeto a partir de ellos. Imagina que tienes una
     * aplicación que serializa en disco una serie de objetos al cerrarse
     * y los lee en la siguiente ejecución para mantener los valores que
     * tenían antes. El campo serialVersionUID es el número de versión de
     * la clase. Cuando el objeto es serializado lo primero que hace es
     * escribir el serialVersionUID. Si al leer el objeto se detecta que
     * el valor del serialVersionUID guardado no coincide con el actual se
     * lanza una exception InvalidClassException, de modo que el programador
     * puede tratar la excepción de manera adecuada. Para que este mecanismo
     * funcione bien, el programador debe proveer el campo private static
     * final long serialVersionUID en todas las clases que implementen
     * Serializable y en todas las subclases de ellas. El valor es
     * indiferente, pero debes actualizarlo cada vez que modificas tu  clase
     * añadiendo o quitando atributos.
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * Dibuja desde la esquina superior izquierda líneas
     * para formar una especie de triángulo en la parte
     * superior izquierda.
     */
    public void paintComponent( Graphics g ) {
        //Lo primero que debemos hacer es llamar a paintComponent
        //para asegurar que el panel se muestre correctamente
        super.paintComponent( g );

        //Obtenemos la anchura total
        int anchura = getWidth();
        //Obtenemos la altura total
        int altura = getHeight();

        //Obtenemos el desplazamiento en x
        int moverEnX = anchura / 15;

        //Obtenemos el desplazamiento en y
        int moverEnY = altura / 15;

        //Un ciclo que dibuja líneas a partir de la esquina superior
        //izquierda
        for ( int i = 0; i <= 15; i++) {
            g.drawLine( 0, 0, moverEnX * i, altura - (moverEnY * i));
        }
    }

    /**
     * Punto de entrada a la clase y a la aplicación.
     * @param args matriz de argumentos de cadena.
     */
    public static void main( String args[] ) {
        //Crea un objeto PanelDibujoEsquina que contendrá
        //el dibujo
        PanelDibujoEsquina panel = new PanelDibujoEsquina();

        //Crea un objeto JFrame que contiene el marco
        //donde estará el panel
        JFrame aplicacion = new JFrame();

        //Establece lo que hará el marco al salir
        aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        //Agrega el panel al marco creado
        aplicacion.add( panel );
        //Asignamos el tamaño del marco
        aplicacion.setSize( 200, 200 );
        //Asignamos a la propiedad visible true
        aplicacion.setVisible( true );
    }
}

1 comentario:

  1. Hola estoy viendo el libro de deitel y no supe como resolver este ejercicio que muestras, pero con tu ejemplo ya tengo una idea de como hacerlo. Gracias

    ResponderEliminar