Java + Swing 008. Modo diseño en NetBeans. Uso básico de Métodos, Eventos, Control de Excepciones, Conversión de tipo de datos y Tabla (jTable).

Ejercicio: Obtener nombre, apellido, edad, sexo de varias personas; almacenar en una tabla y procesar los datos y para obtener edad promedio, cantidad de masculinos y femeninos.
En el diseño vemos con numeración en rojo el objeto y la referencia del nombre de variable que le damos para adaptarse a los método que utilizaremos.
Diseño del formulario utilizando JFrame.
Como elementos utilizamos “Etiquetas”, “Botón”, “combo”, “Tabla” y “Campos de Texto”.
Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho y “Cambiar nombre de variable…”. Se puede usar la que se ajuste al código de más abajo. Los campos de texto para resultados se puede indicar como deshabilitado, desmarcando “enabled” en “Properties o Propiedades” de modo diseño. Para añadir valores al combo o “JComboBox” en propiedades “Model” agregamos cada valor separado por comas, estos valores serán estáticos.
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. La declaración “DefaultTableModel model;” nos permite crear una variable de clase para utilizar en cualquier método. Los método llamados en el Constructor se ejecutan al arrancar el formulario, como “setLocationRelativeTo(null)” y “tableModel()”.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado.
Código Java
public void tableModel(){
this.jTable1.getColumnModel().getColumn(0).setPreferredWidth(150);
this.jTable1.getColumnModel().getColumn(1).setPreferredWidth(50);
this.jTable1.getColumnModel().getColumn(2).setPreferredWidth(50);
model = (DefaultTableModel)this.jTable1.getModel();
model.setNumRows(0);
}
public void limpiar(){
tableModel();
this.nom.setText(null);
this.edad.setText(null);
this.sexo.setSelectedIndex(-1);
this.promedioEdad.setText(null);
this.totalF.setText(null);
this.totalM.setText(null);
}
public void agregar(){
if( this.nom.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "Indique Nombre y Apellido...");
}
else{
if(this.edad.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "Indique la edad...");
}
else{
if(this.sexo.getSelectedIndex() == -1){
JOptionPane.showMessageDialog(null, "Seleccione sexo...");
}
else{
try {
int edadNum = Integer.parseInt(this.edad.getText());
Object selectedItem = this.sexo.getSelectedItem();
String sexoN = selectedItem.toString();
model.addRow(new Object[]{
this.nom.getText(),edadNum,sexoN
});
limpiarAgregar();
procesarDatos();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "ERROR: Verifique datos ingresados..." + e);
}
}
}
}
}
public void limpiarAgregar(){
this.nom.setText(null);
this.edad.setText(null);
this.sexo.setSelectedIndex(-1);
}
public void procesarDatos(){
if(this.jTable1.getRowCount()> 0){
int edadPromedio = 0;
int edadSuma = 0;
int numMasculino = 0;
int numFemenino = 0;
for (int i = 0; i < this.jTable1.getRowCount(); i++) {
Object valueAt = model.getValueAt(i, 1);
int edadT = Integer.parseInt(valueAt.toString());
edadSuma += edadT;
Object valueAt1 = model.getValueAt(i, 2);
if (valueAt1.toString().equals("Masculino")) {
numMasculino += 1;
}
else{
numFemenino += 1;
}
}
edadPromedio = edadSuma / this.jTable1.getRowCount();
this.promedioEdad.setText(String.valueOf(edadPromedio));
this.totalF.setText(String.valueOf(numFemenino));
this.totalM.setText(String.valueOf(numMasculino));
}

}
public void obtenerFila(){
selectedRow = this.jTable1.getSelectedRow();
}
public void eliminarFila(){
if(selectedRow >= 0){
model.removeRow(selectedRow);
procesarDatos();
selectedRow = -1;
}

}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones en este caso “Agregar”, “Eliminar” y “Limpiar”. Para la tabla utilizaremos el evento “Mouse” específicamente “MouseClicked”, que nos permite obtener el número de fina al hacer clic sobre ella y poder utilizar el botón eliminar. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. En la lista de evento vemos los comentarios especificando a que objetos se aplican.
Código Java
    private void agregarActionPerformed(java.awt.event.ActionEvent evt) {                                         
agregar();// Evento para botón agregar
}

private void limpiarActionPerformed(java.awt.event.ActionEvent evt) {
limpiar();// Evento para botón limpiar
}

private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {
eliminarFila();// Evento para botón eliminar
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
obtenerFila();// Evento tipo "MouseClicked" para la JTable1
}
En la imagen como queda al ejecutar el JFrame.

No hay comentarios :

Publicar un comentario