package tablaejecutable;
import javax.swing.*;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class trabajotabla extends javax.swing.JFrame {
public trabajotabla() {
initComponents();
setLocationRelativeTo(null);
iniciar();
tableModel();
}
DefaultTableModel model;
int fila;
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
seleccionarFila();
}
nuevo.setText("nuevo");
agregar.setText("agregar");
actualizar.setText("actualizar");
eliminar.setText("eliminar");
editar.setText("editar");
cancelar.setText("cancelar");
salir.setText("Salir");
jLabel2.setText("TRABAJANDO CON TABLA");
pack();
}// </editor-fold>
private void nuevoActionPerformed(java.awt.event.ActionEvent evt) {
nuevo();
}
private void agregarActionPerformed(java.awt.event.ActionEvent evt) {
agregar();
}
private void actualizarActionPerformed(java.awt.event.ActionEvent evt) {
actualizar();
}
private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {
eliminar();
}
private void editarActionPerformed(java.awt.event.ActionEvent evt) {
editar();
}
private void cancelarActionPerformed(java.awt.event.ActionEvent evt) {
cancelar();
}
private void salirActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
// TODO add your handling code here:
}
public void iniciar(){
//Método que se carga al inicio del formulario,
//Esto lo hacemos llamandolo desde el contructor.
//Principalmente consiste en Limpiar campos y Deshabilitarlas.
this.id.setText(null);
this.id.setEnabled(true);
this.nom.setText(null);
this.nom.setEnabled(true);
this.dir.setText(null);
this.dir.setEnabled(true);
this.correo.setText(null);
this.correo.setEnabled(true);
this.agregar.setEnabled(true);
this.actualizar.setEnabled(true);
this.nuevo.setEnabled(true);
this.editar.setEnabled(true);
this.eliminar.setEnabled(true);
this.jTable1.setEnabled(true);
fila = 0;
}
public void tableModel(){
//Método que se carga al inicio del formulario,
//Esto lo hacemos llamandolo desde el contructor.
/*Utilizamos el siguiente procedimiento para indicar el tamaño
* del cada columna, el índice inicia de 0.
*/
this.jTable1.getColumnModel().getColumn(0).setPreferredWidth(5);
this.jTable1.getColumnModel().getColumn(1).setPreferredWidth(100);
this.jTable1.getColumnModel().getColumn(2).setPreferredWidth(100);
this.jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
//Indicamos que la variable model se aplica al jTable1.
model = (DefaultTableModel)this.jTable1.getModel();
//Indicamos la cantidad de filas que tendrá la tabla al inicio.
model.setNumRows(0);
}
public void cancelar(){
//Método que se ejecuta al precionar el botón "Cancelar".
iniciar();
}
public void nuevo(){
//Método que se ejecuta al precionar el botón "Nuevo".
iniciar();
//Utilizamos este procedimiento para generar el id.
this.id.setText(String.valueOf(this.jTable1.getRowCount() + 1));
//Activamos campos y bóton.
this.nom.setEnabled(true);
this.dir.setEnabled(true);
this.correo.setEnabled(true);
this.agregar.setEnabled(true);
this.id.requestFocus();
}
public void agregar(){
//Comprobamos que los campos no esten vacios.
if(nom.getText().isEmpty() || dir.getText().isEmpty() || correo.getText().isEmpty() ){
JOptionPane.showMessageDialog(null, "Rellena todos los campos.");
}
else{
//Agregamos datos a la tabla utilizando Object.
//Cada getText() entre comas significa una columna.
model.addRow(new Object[]{
id.getText(),nom.getText(),dir.getText(),correo.getText()
});
iniciar();
}
}
public void seleccionarFila(){
//Utilizamos este método para obtener que fila se ha seleccionado.
//Habilitamos botones y campos.
//Rellenamos campos.
if(jTable1.getRowCount() > 0 || agregar.isEnabled()== false){
//Utilizamos getValueAt del model para obtener datos de la tabla.
fila = jTable1.getSelectedRow();
id.setText(String.valueOf(model.getValueAt(fila, 0)));
nom.setText(String.valueOf(model.getValueAt(fila, 1)));
dir.setText(String.valueOf(model.getValueAt(fila, 2)));
correo.setText(String.valueOf(model.getValueAt(fila, 3)));
nuevo.setEnabled(false);
editar.setEnabled(true);
eliminar.setEnabled(true);
}
}
public void editar(){
//Al precionar el botón editar se activan algunos campos
// y otros se desactivan. Lo mismo con los botones.
jTable1.setEnabled(false);
eliminar.setEnabled(false);
actualizar.setEnabled(true);
nom.setEnabled(true);
dir.setEnabled(true);
correo.setEnabled(true);
}
public void actualizar(){
if(nom.getText().isEmpty() || dir.getText().isEmpty() || correo.getText().isEmpty() ){
JOptionPane.showMessageDialog(null, "Rellena todos los campos.");
}
else{
//Utilizamos setValueAt para modificar datos en tabla.
//Por orden se indica "Datos a cargar", fila y columna.
model.setValueAt(nom.getText(), fila, 1);
model.setValueAt(dir.getText(), fila, 2);
model.setValueAt(correo.getText(), fila, 3);
iniciar();
}
}
public void eliminar(){
//Utilizamos showConfirmDialog para el botón eliminar.
int showConfirmDialog = JOptionPane.showConfirmDialog(null, "Desea eliminar esta fila.",
"Mensaje del Sistema.", JOptionPane.YES_NO_OPTION);
if (showConfirmDialog == 0) {
model.removeRow(fila);
reiniciar();
iniciar();
}
}
public void reiniciar(){
//Reordenamos el id para evitar que se dupliquen.
for (int i = 0; i < jTable1.getRowCount(); i++) {
model.setValueAt(i+1, i, 0);
}
}