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
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios: