/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package practica1.ui.tablaPoblacion;
import javax.swing.JTable;
import javax.swing.event.ChangeEvent;
import javax.swing.table.TableColumnModel;
/**
* Componente que extiend de JTable e implementa un modelo de la población
* para representar los datos
* @author Miguel González - Miguel
*/
public class TablaPoblacion extends JTable {
private ModeloPoblacionTabla modeloPoblacionTabla;
private TablaCellEditorTextField editor;
/**
* Constructor del objeto
* @param modeloTabla Modelo de la tabla
*/
public TablaPoblacion(ModeloPoblacionTabla modeloTabla) {
super();
this.modeloPoblacionTabla = modeloTabla;
init();
}
/**
* Inicializa la tabla
*/
private void init() {
//Creamos el cell editor de tipo TextField
editor = new TablaCellEditorTextField();
//Establecemos la tabla en el modelo
setModeloTabla(modeloPoblacionTabla);
}
/**
* Listens for cells that has been edited. When a cell has been edited, this
* function will run.
*/
@Override
public void editingStopped(ChangeEvent e) {
String valor = (String)editor.getCellEditorValue();
int row = editor.getRow();
int column = editor.getColumn();
//Actualizamos el modelo de la tabla
modeloPoblacionTabla.setValueAt(valor, row, column);
//Le decimos al JTable que pare de editar
super.editingStopped(e);
}
/**
* Devuelve el modelo de la tabla
* @return ModeloPoblacionTabla
*/
public ModeloPoblacionTabla getModeloTabla() {
return modeloPoblacionTabla;
}
/**
* Establece un nuevo modelo de la tabla
* @param ModeloPoblacionTabla
*/
public void setModeloTabla(ModeloPoblacionTabla modeloTabla) {
this.modeloPoblacionTabla = modeloTabla;
setModel(modeloTabla);
//Al cambiar el modelo de la tabla es necesario volver a especificar
//Los editores de las tablas
especificarCellEditor();
//Repintamos la tabla
repaint();
}
/**
* Especifica los cellEditor que tendrán cada columna
*/
private void especificarCellEditor() {
TableColumnModel tablaColumnModel = getColumnModel();
tablaColumnModel.getColumn(1).setCellEditor(editor);
tablaColumnModel.getColumn(2).setCellEditor(editor);
tablaColumnModel.getColumn(3).setCellEditor(editor);
tablaColumnModel.getColumn(4).setCellEditor(editor);
}
}