miércoles, 18 de noviembre de 2015

GUI CON OBJETOS EN UNA TABLA

//este programa trabaja con un arreglo de objeto
//para ello se crean diferentes clases y se le llama en un formulario



public class Persona {
    private String codigo;
    private String nombre;
    private String apellidos;
    private int edad;

    public Persona(String codigo, String nombre, String apellidos, int edad) {
        this.codigo = codigo;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }
   
}

//--------------------

package GUItabla_arrayList;

import java.util.ArrayList;

/**
 *
 * @author CARLOS-D
 */
public class Personas {
    private ArrayList personas;
    private int max_personas=20;
    
    public Personas(){
        personas=new ArrayList(max_personas);
    }
    
    public void addPersona(Persona p){
        if (personas.size()<max_personas) {
            personas.add(p);
        }else{
            System.out.println("El arreglo esta lleno");
        }
    }
    
    public Persona getPersona(int index){
        return (Persona) personas.get(index);
    }
    
    public int cantidad(){
        return personas.size();
    }
    
    public boolean validar_codigo(String codigo){
        for (int i = 0; i < personas.size(); i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                return true;
            }
        }
        return false;
    }
    
    public int suma_total_edades(){
        int suma_edad=0;
        for (int i = 0; i < personas.size(); i++) {
            suma_edad=suma_edad+getPersona(i).getEdad();
        }
        return suma_edad;
    }
    
    public void actualizarPersona(String codigo,Persona p){
        boolean estado=false;
        
        for (int i = 0; i < 10; i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                estado=true;
                personas.set(i, p);
            }
        }
        if (estado==false) {
            System.out.println("Elemento no encontrado");
        }
    }
    
    public void eliminarPersona(String codigo,Persona p){
        boolean estado=false;
        
        for (int i = 0; i < 10; i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                estado=true;
                personas.remove(i);
            }
        }
        if (estado==false) {
            System.out.println("Elemento no encontrado");
        }
    }
}

//---------------------------------------------
package GUItabla_arrayList;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author CARLOS-D
 */
public class Form_Persona extends JFrame implements ActionListener{

    private JLabel lblCodigo,lblNombre,lblApellido,lblEdad,lblSumaTotal;
    private JTextField txtfCodigo,txtfNombre,txtfApellido,txtfEdad,txtfSumaTotal;
    private JButton btnAgregar,btnMostrar,btnModificar,btnEliminar;
    private JTable tabResultados;
    private DefaultTableModel dtm;
    private JScrollPane pane;
    private String titulos []={"Codigo", "Nombre", "Apellidos", "Edad"};
    
    
    public Form_Persona(){
        super("Tabla de Personas");
        Init();
    }
    
    Personas personas=new Personas();
    
    public void Init(){
        
        lblCodigo = new JLabel();
        lblCodigo.setText("Codigo");
        lblCodigo.setBounds(20, 20, 100, 25);
        add(lblCodigo);
        txtfCodigo = new JTextField();
        txtfCodigo.setBounds(80, 20, 100, 25);
        add(txtfCodigo);
        
        lblNombre = new JLabel();
        lblNombre.setText("Nombre");
        lblNombre.setBounds(20, 50, 100, 25);
        add(lblNombre);
        txtfNombre = new JTextField();
        txtfNombre.setBounds(80, 50, 100, 25);
        add(txtfNombre);

        lblApellido = new JLabel();
        lblApellido.setText("Apellidos");
        lblApellido.setBounds(20, 80, 100, 25);
        add(lblApellido);
        txtfApellido = new JTextField();
        txtfApellido.setBounds(80, 80, 100, 25);
        add(txtfApellido);

        lblEdad = new JLabel();
        lblEdad.setText("Edad");
        lblEdad.setBounds(20, 110, 100, 25);
        add(lblEdad);
        txtfEdad = new JTextField();
        txtfEdad.setBounds(80, 110, 100, 25);
        add(txtfEdad);
        
        lblSumaTotal = new JLabel();
        lblSumaTotal.setText("Suma Total");
        lblSumaTotal.setBounds(20, 270, 100, 25);
        add(lblSumaTotal);
        txtfSumaTotal = new JTextField();
        txtfSumaTotal.setBounds(100, 270, 100, 25);
        add(txtfSumaTotal);
        txtfSumaTotal.setEditable(false);

        btnAgregar = new JButton();
        btnAgregar.setText("Agregar");
        btnAgregar.setBounds(200, 20, 100, 25);
        add(btnAgregar);
        btnAgregar.addActionListener(this);

        btnMostrar = new JButton();
        btnMostrar.setText("Mostrar");
        btnMostrar.setBounds(200, 50, 100, 25);
        add(btnMostrar);
        btnMostrar.addActionListener(this);
        
        btnEliminar = new JButton();
        btnEliminar.setText("Eliminar");
        btnEliminar.setBounds(200, 80, 100, 25);
        add(btnEliminar);
        btnEliminar.addActionListener(this);
        
        btnModificar = new JButton();
        btnModificar.setText("Modificar");
        btnModificar.setBounds(200, 110, 100, 25);
        add(btnModificar);
        btnModificar.addActionListener(this);
        
        tabResultados= new JTable();
        pane = new JScrollPane(tabResultados);
        pane.setBounds(20, 150, 300, 100);
        add(pane);
        
    }
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(btnAgregar)) {
            String codigo = txtfCodigo.getText();
            String nombre = txtfNombre.getText();
            String apellido = txtfApellido.getText();
            int edad = Integer.parseInt(txtfEdad.getText());
            if (personas.validar_codigo(codigo)==true) {
                JOptionPane.showMessageDialog(null, "Este codigo es repetido");
            }else{
                Persona p1 = new Persona(codigo, nombre, apellido, edad);
                personas.addPersona(p1);
                mostrar_lista();
            }
            
         
            txtfCodigo.setText("");
            txtfNombre.setText("");
            txtfApellido.setText("");
            txtfEdad.setText("");
            //area.append("");  
        }
        if (e.getSource().equals(btnMostrar)) {
           /* for (int i = 0; i < per.getPersona(i); i++) {
                area.append("Nombre: " + ap.getPersona(i).getNombre());
                area.append("\nApellido :" + ap.getPersona(i).getApellido());
                area.append("\nEdad: " + ap.getPersona(i).getEdad()+"\n\n");
            }*/
        }
        if (e.getSource().equals(btnEliminar)) {
            
        }
        if (e.getSource().equals(btnModificar)) {
            
        }
    }
    public void mostrar_lista(){
        Object[] registros = new Object[4];
        dtm = new DefaultTableModel(null,titulos);
        for (int i = 0; i < personas.cantidad(); i++) {
            Persona p = personas.getPersona(i);
            registros[0]=p.getCodigo();
            registros[1]=p.getNombre();
            registros[2]=p.getApellidos();
            registros[3]=p.getEdad();
            dtm.addRow(registros);
        }
        tabResultados.setModel(dtm);
        txtfSumaTotal.setText(""+personas.suma_total_edades());
    }
    
    public static void main(String[] args) {
        Form_Persona fp1 = new Form_Persona();
        fp1.setLayout(null);
        fp1.setVisible(true);
        fp1.setSize(400, 500);
        fp1.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}


2 comentarios: