Programación Java con Swing: Gestión de Tablas, Eventos y Relaciones UML entre Clases

Informática y Telecomunicaciones4,86 KB

Gestión de Datos en Java con Swing

A continuación se presenta un conjunto de métodos en Java que permiten mostrar, guardar y gestionar datos de trabajadores, cargos y actividades mediante componentes de la interfaz gráfica Swing.

Mostrar datos en tablas

Método mostrarTra()

Este método construye un DefaultTableModel con las columnas DUI y NOMBRE, recorre la lista de trabajadores y asigna el modelo a la tabla tbDatosT.

public void mostrarTra() {
    DefaultTableModel modelo = new DefaultTableModel();
    String titulo[] = {"DUI", "NOMBRE"};
    modelo.setColumnIdentifiers(titulo);
    for (Trabajador x : trabajadores) {
        Object datos[] = {x.getDui(), x.getNombre()};
        modelo.addRow(datos);
    }
    this.formVista.tbDatosT.setModel(modelo);
}

Método mostrarCargo()

Muestra en la tabla tbDatosC los nombres de los cargos asociados al trabajador seleccionado.

public void mostrarCargo() {
    DefaultTableModel modelo = new DefaultTableModel();
    String titulo[] = {"NOMBRE"};
    modelo.setColumnIdentifiers(titulo);
    for (Cargo x : eTrabajador.getCargo()) {
        Object datos[] = {x.getNombre()};
        modelo.addRow(datos);
    }
    this.formVista.tbDatosC.setModel(modelo);
}

Guardar datos

Guardar actividad mediante JOptionPane

El método guardarActi() solicita el nombre de la actividad mediante un cuadro de diálogo JOptionPane.showInputDialog, la añade al trabajador seleccionado y actualiza la vista.

public void guardarActi() {
    if (eTrabajador != null) {
        String nombre = JOptionPane.showInputDialog("Nombre");
        if (!nombre.isEmpty()) {
            eTrabajador.addActividades(new Actividad(nombre));
            mostrarActi();
        }
    }
}

Guardar trabajador

El método guardarTra() valida que los campos DUI y nombre no estén vacíos antes de crear un nuevo Trabajador y refrescar la tabla.

public void guardarTra() {
    if (!this.formVista.txtDui.getText().isEmpty() && !this.formVista.txtNombreT.getText().isEmpty()) {
        trabajadores.add(new Trabajador(this.formVista.txtDui.getText(), this.formVista.txtNombreT.getText()));
        mostrarTra();
    }
}

Relaciones entre clases en UML

Agregación (rombo vacío)

La relación de agregación se representa con un rombo vacío. Las actividades pueden existir de forma independiente al objeto que las contiene.

public void addActividades(Actividad x) {
    this.actividades.add(x);
}

Composición (rombo lleno)

La relación de composición se representa con un rombo lleno. Los cargos dependen completamente del objeto contenedor y se crean dentro de él.

public void addCargo(String nombre) {
    this.cargo.add(new Cargo(nombre));
}

Gestión de eventos en tablas

Al hacer clic sobre una tabla, el controlador identifica la fila seleccionada y actualiza el objeto activo. Este mecanismo se implementa mediante MouseListener.

if (e.getSource() == this.formVista.tbDatosU) {
    int fila = this.formVista.tbDatosU.getSelectedRow();
    uSeleccionado = universidad.get(fila);
    mostrarEstu();
    mostrarDep();
} else if (e.getSource() == this.formVista.tbDatosDe) {
    int fila1 = this.formVista.tbDatosDe.getSelectedRow();
    dSeleccionado = uSeleccionado.getDepartamentos().get(fila1);
    mostrarTra();
}

Punto de entrada de la aplicación

El método main instancia la vista principal, crea el controlador asociado y hace visible la ventana.

public static void main(String[] args) {
    VistaMain vista = new VistaMain();
    ContraladoMain ctrl = new ContraladoMain(vista);
    vista.setVisible(true);
}

Configuración del controlador

El constructor del controlador registra los listeners de botones y tablas, e inicializa las colecciones y las selecciones activas.

this.formVista = formVista;
this.formVista.btnGuardar.addActionListener(this);
this.formVista.btnAddU.addActionListener(this);
this.formVista.btnAddD.addActionListener(this);
this.formVista.tbDatosU.addMouseListener(this);
this.formVista.tbDatosDe.addMouseListener(this);
this.formVista.btnAddTra.addActionListener(this);
this.universidad = new ArrayList();
uSeleccionado = null;
dSeleccionado = null;

Declaración de la clase controladora

public class ControladorMain extends MouseAdapter implements ActionListener, MouseListener {
    Vista formVista;
    ArrayList universidad;
    Universidad uSeleccionado;
    Departamento dSeleccionado;
}

Descargar

PDF Word HTML