U2 INFORME TECNICO Interfaz Grafica

14
INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO INFORME TECNICO PRESENTA: Rully Emmanuel Pech Figueroa Semestre: IV Aula: J-3 Grupo: “A” CARRERA: Ingeniería en Sistemas Computacionales MATERIA: Tópicos Avanzados de Programación UNIDAD 3: Interfaz Gráfica de Usuarios DOCENTE: Niels Henryk Aranda Cuevas

Transcript of U2 INFORME TECNICO Interfaz Grafica

INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO

INFORME TECNICO

PRESENTA:

Rully Emmanuel Pech Figueroa

Semestre: IV Aula: J-3 Grupo: “A”

CARRERA:

Ingeniería en Sistemas Computacionales

MATERIA:

Tópicos Avanzados de Programación

UNIDAD 3:

Interfaz Gráfica de Usuarios

DOCENTE:

Niels Henryk Aranda Cuevas

Felipe Carrillo Puerto, Quintana Roo a 18 de Abril del 2013

INTRODUCCION

Dentro de este informe técnico se dará a conocer un tema de mucho interés de la asignatura tópicos avanzados de programación unidad 2.- interfaz gráfica de usuario (GUI).

En primera, se presentara la codificación de un programa mediante el lenguaje de programación java empleando el ID NetBeans. La aplicación va a capturar y guardar los datos generales de los empleados. Dentro de esta aplicación se darán a conocer los componentes necesarios para el funcionamiento de la aplicación, el cual utilizara las bibliotecas como los contenedores de swing y menús swing, los componentes que están dentro de estos contenedores se explicaran después de la presentación de la codificación de la aplicación y se explicara a detalle el funcionamiento de las mismas.

Esta aplicación nos ofrece el entorno grafico para poder construir nuestras ventanas y agregar componentes a las ventanas, creando automáticamente el código de las instancias de cada componente que se agrega, ahorrando tiempo a la hora de programar.

EXPLICACION CODIGO

CLASE (frmMantEmpleados)

public class frmMantEmpleados extends javax.swing.JInternalFrame {

private int anyoActual, fila;

Object[] filas = new Object[ 6 ];

javax.swing.table.DefaultTableModel modeloTabla =newjavax.swing.table.DefaultTableModel();

*iniciamos programando los objetos del formulario, primero declaramos las variables anyoActual y fila y posteriormente creamos un arreglo de tipo object llamado filas de 6 posiciones, se declara la variable object en cada fila para que en cada una de ellas acepte un dato distintode cual quier tipo ya sea string, int o double.

Los siguiente a realizar es crear un modelo el cual es de tipo tabla el cual carga los datos que provienen delas filas, es decir el modelo será quien cargue el objeto.

public frmMantEmpleados( String titulo, boolean tamaño, boolean cerrar, boolean maximizar, boolean minimizar ) {

super( titulo, tamaño, cerrar, maximizar, minimizar );

*se creó el evento el cual contiene los parámetros título, tamaño, cerrar, maximizar y minimizar todos de tipo boolean. Y después de puso súper para que se pueda llevar a cabo las instrucciones como si estuviese dentro de la clase padre, es decir, dentro de la clase principal pero en realidad no es así.

initComponents();

cargarAnyos();

configurarModelos();

detEdad();

}

En esta sección inicializamos los componentes del formulario mantEmpleados que contiene distintos métodos como es el cargar años en el comboBox, también el método para configurar el encabezado dela tabla y por último el método con el cual podemos llevar a cabo el cálculo de la edad de los empleados cerramos la inicialización de los métodos del formulario.

void cargarAnyos(){

int i;

javax.swing.DefaultComboBoxModel modeloCombo =

new javax.swing.DefaultComboBoxModel();

java.util.Calendar fecha = java.util.Calendar.getInstance();

anyoActual = fecha.get( java.util.Calendar.YEAR );

for ( i = 1950; i < anyoActual; i++ ){

modeloCombo.addElement( i );

}

cmbAnyos.setModel( modeloCombo );

}

Aquí lo que se hizo fue crear el evento para cargar años, así mismo se crea y se instancia el modelo y se obtiene el año actual verificándolo en el calendario y además se tuvo que crear un for para determinar el rango en el cual se manejara el comboBox el cual fue definido de 1950 a el año actual y se carga el combo desde el modelo.

void configurarModelos(){

modeloTabla.addColumn("Nombre");

modeloTabla.addColumn("Apellidos");

modeloTabla.addColumn("Año");

modeloTabla.addColumn("Edad");

modeloTabla.addColumn("Sexo");

modeloTabla.addColumn("Areas");

}

Se configura el modelo de la tabla para eso debimos cargar cada uno de los nombres de los títulos de la cabecera de la tabla, así como nombre, apellido, año, edad, sexo, etc.

void detEdad(){

int edad =

anyoActual - Integer.parseInt( cmbAnyos.getSelectedItem().toString() );

txtEdad.setText( String.valueOf( edad ));

}

Uno de los puntos importantes que se deben tomar en cuenta es que se debe de saber la edad de los empleados y por eso debemos calcularlo, pero el dato se recibe de tipo cadena y por eso debemos hacer que se reconozca como de tipo entero por eso usamos el Integer.parseInt y mostrarlo como texto y se evalúa tomando en cuenta la fecha de nacimiento y la fecha actual.

void detDatos(){

String AInteres = "";

filas[ 0 ] = txtNombre.getText();

filas[ 1 ] = txtApellidos.getText();

filas[ 2 ] = cmbAnyos.getSelectedItem().toString();

filas[ 3 ] = txtEdad.getText();

if ( rdMasculino.isSelected())

filas[ 4 ] = "Masculino";

else

filas[ 4 ] = "Femenino";

if ( chkFutbol.isSelected())

AInteres = chkFutbol.getText() + ", ";

if ( chkVolleyball.isSelected() )

AInteres = chkVolleyball.getText() + ", ";

if ( chkOtro.isSelected())

AInteres = AInteres + txtOtro.getText();

filas[ 5 ] = AInteres;

}

Como so puede observar aun hasta este punto no se ha definido el procedimiento de datos por eso en esta sección se cargan los datos que van dentro del arreglo el cual podemos observar como la tabla, para empezar se carga el nombre, apellidos, entre otro, ahora para los demás como es el caso del sexo como se presentan dos opciones es necesario usar un if-else es decir si no es femenino será masculino.

En el caso de los intereses usamos varios if pero no else porque en esta ocasión se pueden seleccionar varios intereses a la vez y después de cada interés se determinó que llevara un coma por eso se pone entre comillas las comas y con un signo+.

private void cmbAnyosActionPerformed(java.awt.event.ActionEvent evt) {

}

private void txtNombreActionPerformed(java.awt.event.ActionEvent evt) {

}

private void cmbAnyosItemStateChanged(java.awt.event.ItemEvent evt) {

detEdad();

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

detDatos();

modeloTabla.addRow(filas);

tabEmpleados.setModel(modeloTabla);

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

detDatos();

for ( int i = 0; i < 6; i++ )

modeloTabla.setValueAt(filas[ i ], fila, i);

tabEmpleados.setModel(modeloTabla);

}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

modeloTabla.removeRow(fila);

tabEmpleados.setModel( modeloTabla );

}

private void tabEmpleadosMouseClicked(java.awt.event.MouseEvent evt) {

fila = tabEmpleados.rowAtPoint( evt.getPoint() );

}

Lo que se realizó aquí fue la declaración de los eventos de cada uno de los botones. Por ejemplo en el botón modificar en el cual se crea el código en el cual se permite modificar el modelo por lo almacenado en la fila también permite actualizar la tabla con el modelo.

private javax.swing.ButtonGroup buttonGroup1;

private javax.swing.JCheckBox chkFutbol;

private javax.swing.JCheckBox chkOtro;

private javax.swing.JCheckBox chkVolleyball;

private javax.swing.JComboBox cmbAnyos;

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2;

private javax.swing.JButton jButton4;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JLabel lblEdad;

private javax.swing.JRadioButton rdFemenino;

private javax.swing.JRadioButton rdMasculino;

private javax.swing.JTable tabEmpleados;

private javax.swing.JTextField txtApellidos;

private javax.swing.JTextField txtEdad;

private javax.swing.JTextField txtNombre;

private javax.swing.JTextField txtOtro;

}

Por último se declara cada una de las variables y el tipo a la cual pertenecen, así como también a lo cual se refiere, es decir, ya sea que se trate de un botón, una tabla, texto, o un combo.

frmMenu

public class frmMenu extends javax.swing.JFrame {

public frmMenu() {

initComponents();

jMenuItem1.addActionListener(

new java.awt.event.ActionListener(){

Se creó una clase publica con el nombre frmMenu la cual es nuestra clase principal en la cual se declaran todos los eventos que componen el formulario como es el ítem en el cual se carga el combo en el cual encontramos los años.

public void actionPerformed( java.awt.event.ActionEvent evento ){

frmMantEmpleados empleados = new frmMantEmpleados(

"Mantenimiento de Empleados", true,true, true, true );

panelInterno.add( empleados );

empleados.setVisible( true );

}

});

setSize( 598, 620 );

}

En esta sección se declara otro evento el cual consiste en ponerle nombre a la tabla del panel interno en el cual se ingresan los datos de los empleados y se le otorgo el nombre “Mantenimiento Empleados” así como también este evento declarado permite que la ventana pueda ser cerrada, maximizada y minimizada y cambiar de tamaño y por último se determina el tamaño de la ventana.

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new frmMenu().setVisible(true);

}

});

}

private javax.swing.JMenu jMenu1;

private javax.swing.JMenuBar jMenuBar1;

private javax.swing.JMenuItem jMenuItem1;

private javax.swing.JDesktopPane panelInterno;

}

Aquí lo que se realizo fue crear el evento el cual permitirá que el programa se ejecute y la segunda tabla pueda ser visible para el usuario y por último se declaran las variables que se encuentran dentro del formulario esto incluye al tipo al cual pertenece y a que menú se refiere.

CONCLUSION

Para concluir podremos decir que las interfaces son de gran ayudan a mejorar el entorno

visual de nuestro programa, y si deseamos nos da la posibilidad de editarlo para ajustarlo

a nuestras necesidades.

La creación del programa y las interfaces no son complicadas y no solo es poner el código

ya que lo que realmente importa es que entiendas lo que programas, para que pudiera

hacer las funciones y las opciones de la interfaz; la programación en esta parte fue

fundamental.

Fue de gran ayuda, a ver tenido conocimientos previos acerca de la programación ya que

fue de mucha utilidad por ejemplo los array que son los arreglos, las instancias, de igual

manera se utilizaron unos códigos como convertidores estos se utilizaron para hacer que

una parte del código reconozca su nueva función sin que afecte a la que se declaró

anteriormente.

CONCLUSION

En esta segunda unidad nos ayudamos mediante unas copias para generar nuestra

interfaz mediante botones o casillas, Fue como un tutorial a seguir, y nos sirvió para que el

usuario final pueda interactuar con ella

La codificación fue un poco sencilla porque nos ayudamos de unas copias, aunque se tuvo

que corregir errores encontrados. Y fue realmente importante entender lo que se copiaba

ya que al momento de corregir, debíamos saber que estaba mal y que estaba bien

Para concluir podemos decir que la interfaz como lo hemos mencionado antes sirve para

que el usuario pueda interactuar con ella, es decir: escribir en los campos, hacer acciones,

modificar valores etc.