Taller 3 - JOptionPane

 
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class InterfazEmpleado extends JFrame
{
 private PanelDatos panDat; //Defino panDat de tipo PanelDatos
    private PanelSalario panSal;//Defino panSal de tipo PanelSalario
    private PanelConsultas panCon;//Defino panCon de tipo PanelConsultas
    private PanelExtensiones panExt;//Defino panExt de tipo PanelExtensiones
    private JPanel panCentral; // Defino panCentral de tipo JPanel que va a contener al panel panSal y panCon   
    
   public InterfazEmpleado( Empleado e )
    {
        setTitle( "Sistema de Empleados de Emssanar" );
        //Crea el Panel Datos
        panDat = new PanelDatos( );
        panSal = new PanelSalario( this );
        panCon = new PanelConsultas( );
        panExt = new PanelExtensiones( this );
        
        /*----------------------
         * Panel Datos                
         *----------------------
         * +Panel central
         *------Panel Salario
         *------Panel Consulta
         * ----------------------
         *Panel Extensiones  
         * ----------------------
         * */
        //El panel central contiene el Panel Salario y el panel consultas
        panCentral = new JPanel();
        panCentral.setLayout( new BorderLayout( ) );
        panCentral.add(panSal, BorderLayout.NORTH);
        panCentral.add(panCon, BorderLayout.SOUTH);
        
        // organizo el panel principal
        getContentPane( ).setLayout( new BorderLayout( ) );
        getContentPane( ).add( panDat, BorderLayout.NORTH );
        getContentPane( ).add( panCentral, BorderLayout.CENTER );
        getContentPane( ).add( panExt, BorderLayout.SOUTH );
        
        
        setLocationRelativeTo(null); //Ubica la ventana en el cento
        setVisible(true); //Mostramos la ventana
        setSize( 530, 530 ); //Definimos dimensiones Ancho=530, Alto=530
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );//Forzamos que se cierre la ventana cuando demos Cerrar
       
    }
 
   public static void main(String[] args) {
      Empleado e= new  Empleado();
      new InterfazEmpleado(e);
   }
}
 ´
public class Empleado
{
    // Atributos
    private String nombre; //Nombre
    private String apellido; //Apellido
    private int sexo; //Sexo o genero
    private Fecha fechaNacimiento; //Fecha de nacimiento
    private Fecha fechaIngreso;// Fecha de ingreso
    private String imagen; //Ruta de la imagen
    private int salario; //Salario
    // Métodos
    //Inicializa un empleado con la información básica. 
 
    public void inicializar( String pNombre, String pApellido, int pSexo, Fecha pFechaN, Fecha pFechaI, int pSalario )
    {        
      nombre = pNombre;
         apellido = pApellido;
         sexo = pSexo;
         fechaNacimiento = pFechaN;
         fechaIngreso = pFechaI;
         imagen = null;
         salario = pSalario;
    }
    //Retorna el apellido del empleado
    public String darApellido( )
    {      
     return apellido;
    }
    //Retorna la fecha de ingreso del empleado en una cadena
    public String darFechaIngreso( )
    {       
     String strFecha = fechaIngreso.toString( );
        return strFecha;
    }
    //Retorna la fecha de nacimiento del empleado en una cadena
    public String darFechaNacimiento( )
    {        
      String strFecha = fechaNacimiento.toString( );
         return strFecha;
    }
    //Retorna la ruta donde se encuentra la imagen del empleado
    public String darImagen( )
    {       
     return imagen;
    }
    //Retorna el nombre del empleado
    public String darNombre( )
    {      
     return nombre;
    }
    //Retorna el salario del empleado
    public int darSalario( )
    {
      return salario;
    }
    //Retorna el sexo del empleado.
    public int darSexo( )
    {       
      return sexo;
    }
    //Retorna la edad de la persona en años.
     public int darEdad( )
    {
     return 0;
    }
    //Retorna la antigüedad del empleado en años.
    public int darAntiguedad( )
    {   
     return 0;
    }
    //Este método sirve para saber las prestaciones del empleado usando la fórmula: p = (a * s)/12 (p: prestaciones, a: antigüedad, s: salario). 
 
    public double darPrestaciones( )
    {     
     return 0;
    }
    //Cambia la fecha de ingreso del empleado. 
 
    public void cambiarFechaIngreso( Fecha pFechaIngreso )
    {
     fechaIngreso = pFechaIngreso;
    }
    //Cambia la ruta donde está la imagen del empleado. 
     public void cambiarImagen( String pImagen )
    {
     imagen = pImagen;
    }
    //Cambia el salario del empleado. 
     public void cambiarSalario( int pSalario )
    {
     salario = pSalario;
    }
    // Puntos de Extensión
    //Método de extensión 1
    public String metodo1( )
    {    
      return "Respuesta 1";
    }
    //Método de extensión 2
    public String metodo2( )
    {
     return "Respuesta 2"; 
    }
}
 
import java.util.Calendar;
import java.util.GregorianCalendar;
 
//Esta clase sirve para representar una fecha y hacer algunas operaciones básicas
public class Fecha
{   // Atributos
    private int dia;//Día del mes
    private int mes;//Mes
    private int anio; //año
    // Métodos
    //Inicializa una fecha con los parámetros proporcionados 
     public void inicializar( int d, int m, int a )
    {  
     dia = d;
        mes = m;
        anio = a;
    }
    //Construye una nueva fecha inicializada en el día de hoy. 
 
    public void inicializarHoy( )
    {   
     // Usamos un calendario Gregoriano inicializado en el día de hoy
        GregorianCalendar gc = new GregorianCalendar( );

        // Sacamos los valores de día, mes y año del calendario
        dia = gc.get( Calendar.DAY_OF_MONTH );
        mes = gc.get( Calendar.MONTH ) + 1;
        anio = gc.get( Calendar.YEAR );
    }
    //Retorna el día de esta fecha
    public int darDia( )
    {
     return dia;
    }
    //Retorna el mes de esta fecha
    public int darMes( )
    {
     return mes;
    }
    //Retorna el año de esta fecha
    public int darAnio( )
    {
     return anio;
    }
    //Este método sirve para dar la diferencia en meses que hay entre dos fechas.
    public int darDiferenciaEnMeses( Fecha fecha )
    {
     int diferencia = 0;
        int otroAnho = fecha.darAnio( );
        int otroMes = fecha.darMes( );
        int otroDia = fecha.darDia( );
        // Calcula la diferencia en meses
        diferencia = 12 * ( otroAnho - anio ) + ( otroMes - mes );
   
        return diferencia;
    }
    //Retorna una cadena que representa la fecha
    public String toString( )
    {
     return "" + dia + "-" + mes + "-" + anio;
    }
}
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
 
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
/**
 * En este panel se muestran los datos del empleado
 */
public class PanelDatos extends JPanel
{
 
    private JLabel labNombre; //Etiqueta del nombre
    private JLabel labApellido;// Etiqueta del apellido
    private JLabel labFIngreso; //Etiqueta de la fecha de ingreso
    private JLabel labFNacimiento; //Etiqueta de la fecha de nacimiento
    private JLabel labSexo;//Etiqueta del sexo
    private JTextField txtNombre; //Campo de texto para el nombre
    private JTextField txtApellido;//Campo de texto para el apellido
    private JTextField txtFIngreso; //Campo de texto para la fecha de Ingreso
    private JTextField txtFNacimiento;//Campo de texto para la fecha de nacimiento
    private JTextField txtSexo;//Campo de texto para el sexo
    private JLabel labImagen;//Etiqueta donde se muestra la imagen
    //-----------------------------------------------------------------
    // Constructores
    //-----------------------------------------------------------------
    /**
     * Construye el de Datos del empleado.
     */
    public PanelDatos( )
    {
        GridBagLayout gridbag = new GridBagLayout( );
        setLayout( gridbag );
        setBorder( new TitledBorder( "Datos Personales" )  );
 
        GridBagConstraints gbc;
 
        labNombre = new JLabel( "Nombre: " );
        gbc = new GridBagConstraints();
        gbc.gridx=0; //ubicacion X dentro de la rejilla
        gbc.gridy=0; //ubicacion Y dentro de la rejilla
        /*gbc.gridwidth=1;// Cuantas columnas ocupa
        gbc.gridheight=1; //Cuantas filas ocupa
        gbc.weightx=1; //Estirarte en X
        gbc.weighty=1; //Estirarse en Y*/
        gbc.anchor = GridBagConstraints.WEST;//Si necesito alinear todo los campos al oeste
        add( labNombre, gbc );
        
        labApellido = new JLabel( "Apellido: " );
        gbc.gridx=0; gbc.gridy=1;  //ubicacion X, Y dentro de la rejilla        
        add( labApellido, gbc );

        labSexo = new JLabel( "Sexo: " );
        gbc.gridx=0; gbc.gridy=2;  //ubicacion X, Y dentro de la rejilla 
        add( labSexo, gbc );

        labFNacimiento = new JLabel( "Fecha de Nacimiento: " );
        gbc.gridx=0; gbc.gridy=3;  //ubicacion X, Y dentro de la rejilla 
        add( labFNacimiento, gbc );

        labFIngreso = new JLabel( "Fecha de Ingreso: " );
        gbc.gridx=0; gbc.gridy=4;  //ubicacion X, Y dentro de la rejilla 
        add( labFIngreso, gbc );

        txtNombre = new JTextField( 15 );
        gbc.gridx=1; gbc.gridy=0;  //ubicacion X, Y dentro de la rejilla 
        add( txtNombre, gbc );
        txtNombre.setEnabled( false );

        txtApellido = new JTextField( 15 );
        gbc.gridx=1; gbc.gridy=1;  //ubicacion X, Y dentro de la rejilla 
        add( txtApellido, gbc );
        txtApellido.setEnabled( false );

        txtSexo = new JTextField( 2 );
        gbc.gridx=1; gbc.gridy=2;  //ubicacion X, Y dentro de la rejilla 
        add( txtSexo, gbc );
        txtSexo.setEnabled( false );

        txtFNacimiento = new JTextField( 10 );
        gbc.gridx=1; gbc.gridy=3;  //ubicacion X, Y dentro de la rejilla 
        add( txtFNacimiento, gbc );
        txtFNacimiento.setEnabled( false );

        txtFIngreso = new JTextField( 10 );
        gbc.gridx=1; gbc.gridy=4;  //ubicacion X, Y dentro de la rejilla 
        add( txtFIngreso, gbc );
        txtFIngreso.setEnabled( false );

        labImagen = new JLabel( );
        gbc.gridx=2; gbc.gridy=0;  //ubicacion X, Y dentro de la rejilla 
        add( labImagen, gbc );
        
    }    
    // Métodos    
    public void actualizarCampos( String nombre, String apellido, String sexo, String fechaI, String fechaN, String imagen )
    {        
    }
    /**
     * Este método se usa para cargar la información de la imagen. Si no se leen los bytes de la imagen, entonces se depende del MediaTracker.
     * @param imagen Ruta donde se encuentra la imagen. imagen!=null y imagen corresponde a la ruta de una imagen.
     * @return Retorna la imagen.
     * @throws IOException Se lanza esta excepción si no se puede leer la imagen.
     */
    private byte[] cargarImagen( String imagen ) throws IOException
    {
 
        ByteArrayOutputStream baos = new ByteArrayOutputStream( );
        FileInputStream fin = new FileInputStream( imagen );
        int data = 0;
        while( data != -1 )
        {
            data = fin.read( );
            baos.write( data );
        }
 
        return baos.toByteArray( );
    }
 
}
 
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

public class PanelExtensiones extends JPanel 
{
    //Atributos
    private InterfazEmpleado interfazEmpleado;
    private JButton butOpcion1;
    private JButton butOpcion2;
    // Constructores
    public PanelExtensiones( InterfazEmpleado interfaz )
    {
        interfazEmpleado = interfaz; //Asigno la referencia de la Interfaz enpleado a la 
        setBorder( new TitledBorder( "Puntos de Extensión" ));
        setLayout( new FlowLayout( ) );//Defino el tipo de organizacion
        butOpcion1 = new JButton( "Opción 1" ); //Creo Boton   
        butOpcion2 = new JButton( "Opción 2" ); //Creo Boton   
        add( butOpcion1 ); //Añado al panel
        add( butOpcion2 ); //Añado al panel
    }

    // Métodos
   
}
 
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class PanelSalario extends JPanel 
{
    // Atributos
    private InterfazEmpleado interfazEmpleado; //Es una referencia a la interfaz de la aplicación
    private JLabel labSalario; //Etiqueta para el salario
    private JTextField txtSalario; //El campo de texto para el salario
    private JButton botonModificarSalario; //Es el botón para modificar el salario

    // Constructores
    // Construye el panel con una referencia a la ventana principal de la aplicación
    public PanelSalario( InterfazEmpleado interfaz )
    {
        interfazEmpleado = interfaz;
        setBorder(new TitledBorder( "Salario" )  );//Asigno titulo a el Panel
        
        setLayout( new FlowLayout( ) ); //Defino el tipo de organizacion
        labSalario = new JLabel( "Salario: " ); //Creo la Etiqueta Salario
        add( labSalario ); //Añado la etiqueta Salario al Panel
        txtSalario = new JTextField( 10 ); //Creo un campo de texto
        txtSalario.setEnabled( false ); //Deshabilito campo de texto salario
        add( txtSalario ); //Añado campo de textoo al panel
        botonModificarSalario = new JButton( ); //Creo un botom
        botonModificarSalario.setText( "Modificar" ); //Asigno la etiqueta al boton
        add( botonModificarSalario );//Añado el boton modificar al salario
        
        
    }
}
 
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class PanelConsultas extends JPanel
{
    // Atributos
    private Empleado empleado; //El empleado sobre el que se realizan los cálculos
    // Atributos de la interfaz
    private JTextField txtEdad;//El campo donde se muestra la edad
    private JTextField txtAntiguedad;// El campo donde se muestra la antigüedad
    private JTextField txtPrestaciones; //El campo donde se muestran las prestaciones
    private JButton butEdad;  // El botón para calcular la edad
    private JButton butAntiguedad;//El botón para calcular la antigüedad
    private JButton butPrestaciones; //El botón para calcular las prestaciones

    // Constructores
    //Construye el panel de datos a consultar.
    public PanelConsultas( )
    {
      GridBagLayout gridbag = new GridBagLayout( );
         setLayout( gridbag );
        setBorder( new TitledBorder( "Cálculos" ));

        GridBagConstraints gbc;
        gbc = new GridBagConstraints();
        
        butEdad = new JButton( );
        gbc.anchor = GridBagConstraints.WEST;//Si necesito alinear todo los campos al oeste
        gbc.gridx=0; gbc.gridy=0;  //ubicacion X, Y dentro de la rejilla  
        add( butEdad, gbc );

        butAntiguedad = new JButton( );
        gbc.gridx=0; gbc.gridy=1;  //ubicacion X, Y dentro de la rejilla 
        gbc.weightx=1; // Que se estire en x
        butAntiguedad.setText( "Calcular Antigüedad" ); //Le asigno el texto al boton antiguedad
        add( butAntiguedad, gbc );

        butPrestaciones = new JButton( );
        gbc.gridx=0; gbc.gridy=2;  //ubicacion X, Y dentro de la rejilla
        gbc.weightx=1; // Que se estire en x
        butPrestaciones.setText( "Calcular Prestaciones" ); //Le asigno el texto al boton prestaciones
        add( butPrestaciones, gbc );

        txtEdad = new JTextField( 10 );
        gbc.gridx=1; gbc.gridy=0;  //ubicacion X, Y dentro de la rejilla
        add( txtEdad, gbc );
        txtEdad.setEnabled( false );

        txtAntiguedad = new JTextField( 10 );
        gbc.gridx=1; gbc.gridy=1;  //ubicacion X, Y dentro de la rejilla
        add( txtAntiguedad, gbc );
        txtAntiguedad.setEnabled( false );

        txtPrestaciones = new JTextField( 10 );
        gbc.gridx=1; gbc.gridy=2;  //ubicacion X, Y dentro de la rejilla
        add( txtPrestaciones, gbc );
        txtPrestaciones.setEnabled( false );

        butEdad.setText( "Calcular Edad" );
        gbc.gridx=1; gbc.gridy=3;  //ubicacion X, Y dentro de la rejilla     
        
    }
}
Fuente: http://javadsdcero.blogspot.com/2012/08/joptionpane-cuadros-de-dialogos.html

0 comentarios: