Sunteți pe pagina 1din 27

JTable con Ejemplos-Parte I

Introduccion
Un Ejemplo Sencillo
Ejemplo 1.SimpleTable1.java
El Modelo de Tabla
DefaultTableModel
Ejemplo 2.SimpleTable2.java
Ejemplo 3.SimpleTable3.java
AbstractTableModel
Ejemplo 4.SimpleTable4.java
API JTable
Campos
Constructores
Mtodos
API DefaultTableModel
Campos
Constructores
Mtodos
API AbstractTableModel
Campos
Constructores
Mtodos
Comentarios Finales
Referencias

Introduccion
Con la llegada de Swing, como parte de la JFC(Java Foundation Classes), la construccin de
Interfaces Grficas de Usuario(GUI) recibi un excelente conjunto de componentes
(aproximadamente 40)que la mejoraron: desde el siempre utilizado JButton, hasta el flexible
JEditorPane o el JDesktopPane, pasando por los JTree y los JTable; sin dejar de
mencionar a los JFilechooser y los JDialog, todos ellos, y los componentes restantes,
permiten la creacin de aplicaciones con interfaces grficas ms intuitivas y completas.
Swing es el resultado de la unin de esfuerzos entre Netscape, con su Internet Foundation Classes,
y SUN. Swing es slo una parte de la JFC, muchos cometemos el error de creer que Swing y
JFC son lo mismo. La JFC contiene tambin otros elementos, estos son algunos de ellos:
Cortar y Pegar
Elementos de Accesibilidad
Java 2D
Impresin
De todos los componentes que forman Swing, quiz los JTree y las JTable, sean los
componentes con APIs ms extensas (la clase JTable tiene ms de 100 mtodos), y quiza
tambin los ms complejos.
Afortunadamente esa complejidad les permite ser tambin de los componentes Swing ms
personalizables y potentes; al igual que en la mayora de las otras clases Swing no es necesario
conocer todos sus mtodos para comenzar a utilizarlos y darles una utilidad prctica.
Como programadores, sabemos muy bien que la presentacion de datos tabulados es una de las tareas
ms comunes que se presentan al momento de crear interfaces grficas; desde la simple tabla que
permite nicamente mostrar el resultado de una consulta, hasta las que permiten editar directamente
el contenido de cada celda, ordenar las columnas, personalizar su apariencia, etc.
Todas las tareas antes descritas, y muchas otras, son posibles de realizar utilizando la clase
JTable; por supuesto, mientras ms complejo sea el requerimiento a cubrir, se requerir en igual
medida utilizar ms mtodos o recursos de la clase.
Este primer artculo:
Muestra como crear una JTable sencilla para la visualizacion de datos.
Explica que es un modelo de tabla
Muestra como crear una JTable con DefaultTableModel como modelo de tabla
Muestra como crear una JTable con AbstractTableModel como modelo de tabla
Describe la API JTable
Describe la API DefaultTableModel
Describe la API AbstractTableModel

Un Ejemplo Sencillo
El ttulo de este artculo es: JTable con ejemplos; asi que comenzaremos creando una tabla
sencilla. Esta tabla nicamente mostrar un conjunto de datos definidos desde su constructor,
para ello primero daremos una vistazo rpido a los constructores que proporciona esta clase; puedes
ver al final del artculo con detalle ms informacin.
JTable()
JTable(int numRows, int numColumns)
JTable(Object[][] rowData, Object[] columnNames)
JTable(TableModel dm)
JTable(TableModel dm, TableColumnModel cm)
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
JTable(Vector rowData, Vector columnNames)
Para este primer ejemplo utilizaremos el 3er. constructor de la lista anterior. El cual nos permite
construir una tabla a partir de dos parmetros; el primero de ellos: rowData es un array
bidimencional de objetos que representa el contenido de la tabla, y el segundo: columnNames
representa los nombres de cada columna, contenidos tambin en un array que por lo general es un
array de String's.
Nuestro primer ejemplo tendra las siguientes columnas:
String[] columnNames =
{"Nombre", "Apellido", "Pasatiempo", "Aos de Practica",
"Soltero(a)"};

Y utilizaremos el siguiente array para su contenido:


Object[][] data = {
{"Mary", "Campione", "Esquiar", new Integer(5), new
Boolean(false)},
{"Lhucas", "Huml", "Patinar", new Integer(3), new
Boolean(true)},
{"Kathya", "Walrath", "Escalar", new Integer(2), new
Boolean(false)},
{"Marcus", "Andrews", "Correr", new Integer(7), new
Boolean(true)},
{"Angela", "Lalth", "Nadar", new Integer(4), new
Boolean(false)}
};
El constructor, entonces queda asi:
JTable table = new JTable(data, columnNames);

El cdigo completo de nuestro primer ejemplo es el siguiente:

Ejemplo 1. SimpleTable1.java
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class SimpleTable1 extends JFrame {


public SimpleTable1() {
super("Ejemplo 1");

//array bidimencional de objetos con los datos de la tabla


Object[][] data = {
{"Mary", "Campione", "Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml", "Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath", "Escalar", new Integer(2), new
Boolean(false)},
{"Marcus", "Andrews", "Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth", "Nadar", new Integer(4), new Boolean(false)}
};

//array de String's con los ttulos de las columnas


String[] columnNames = {"Nombre", "Apellido", "Pasatiempo",
"Aos de Practica", "Soltero(a)"};

//se crea la Tabla


final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));

//Creamos un JscrollPane y le agregamos la JTable


JScrollPane scrollPane = new JScrollPane(table);

//Agregamos el JScrollPane al contenedor


getContentPane().add(scrollPane, BorderLayout.CENTER);

//manejamos la salida
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {


SimpleTable1 frame = new SimpleTable1();
frame.pack();
frame.setVisible(true);
}
}
Y la siguiente imagen muestra el resultado de la ejecucin del cdigo anterior:

Figura 1. SimpleTable1 en ejecucin


En lugar de arrays pudimos haber utizado vectores y utilizado el ultimo de los constructores de la
lista mostrada anteriormente.
Aunque la maner ms sencilla de construir tablas es utilizando cualquiera de los siguientes
constructores:
JTable(Object[][] rowData, Object[] columnNames)
JTable(Vector rowData, Vector columnNames)
Su utilizacin presenta unas desventajas que debemos tener en cuenta:
La primera, y ms notoria de ellas, es que para la construccion de la tabla se tienen que
tener de antemano los datos que queremos que contenga la tabla ya sea en un array o en
un vector, lo que le resta flexibilidad al llenado de la tabla; ya que quizs en un momento
dado, sera mucho ms prctico y rpido, colocar directamente los datos en la tabla y no
tener que colocarlos antes en un array o vector
La segunda desventaja es que, como te dars cuenta al probar el ejemplo, estos constructores
hacen automticamente que todas las celdas sean editables.
Y la tercera, y menos notoria a primera vista, es que todos los datos contenidos en la
tabla, son tratados como de un mismo tipo de datos. A pesar de que hemos declarado
columnas como Boolean o Integer, todas nuestas celdas muestran su contenido como
String's
Estas tres desventajas pueden ser eliminadas si agregamos un modelo de tabla a nuestra aplicacion.

El Modelo de Tabla
Los modelos de tabla son objetos que implementan la interface TableModel; a travs de ellos es
posible personalizar mucho ms y mejor el comportamiento de los componentes JTable,
permitiendo utilizar al mximo sus potencialidades.
Todas las tablas cuentan con un modelo de tabla , aunque en el ejemplo 1 no se haya especificado,
existe uno por omisin
El siguiente grfico intenta mostrar como cada componente JTable obtiene siempre sus datos
desde un modelo de tabla .

Figura 2. Relacin Modelo -> Vista


La clase AbstractTableModel es la que implementa directamente a la interface
TableModel, aunque es esta clase la que se recomienda extender para utilizarla como modelo de
tabla, existe un modelo de tabla predeterminado que facilita mucho el trabajo con tablas. Este
modelo predeterminado es la clase DefaultTableModel

DefaultTableModel
Esta clase tiene el siguiente diagrama de herencia:
java.lang.Object
|
+-javax.swing.table.AbstractTableModel
|
+-javax.swing.table.DefautTableModel
Nuevamente, antes de comenzar a utilizar esta clase, veremos cuales son los constructores con que
cuenta:
DefaultTableModel()
DefaultTableModel(int numRows, int numColumns)
DefaultTableModel(Object[][] data, Object[] columnNames)
DefaultTableModel(Object[] columnNames, int numRows)
DefaultTableModel(Vector columnNames, int numRows)
DefaultTableModel(Vector data, Vector columNames)
Utilizaremos el constructor que nos permite crear un DefaultTableModel, a partir de los datos
con que ya contamos del ejemplo anterior:
Object[][] data = {
{"Mary", "Campione",
"Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml",
"Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath",
"Escalar", new Integer(2), new Boolean(false)},
{"Marcus", "Andrews",
"Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth",
"Nadar", new Integer(4), new Boolean(false)}
};

String[] columnNames = {"Nombre",


"Apellido",
"Pasatiempo",
"Aos de Practica",
"Soltero(a)"};

Por lo tanto, el constructor queda asi:


DefaultTableModel dtm= new DefaultTableModel(data, columnNames);

Despues de haber creado el modelo de tabla, dtm en el ejemplo , se crea la tabla con el
constructor correspondiente:
final JTable table = new JTable(dtm);

Una vez hecho esto, cualquier modificacin que se realice sobre el modelo de tabla se reflejar
directamente en la tabla. As, podemos agregar una columna:
String[] newColumn= {"Flan",
"Pastel",
"Helado",
"Barquillo"
"Manzana" };
dtm.addColumn("Postre",newColumn);

una fila:
Object[] newRow={"Pepe", "Grillo",
"Tenis", new Integer(5), new Boolean(false), "Pera"};
dtm.addRow(newRow);

o modificar una celda en especial, en este ejemplo la celda ubicada en la columna 1, fila 1:
dtm.setValueAt("Catherine", 1, 1);

Puedes revisar los mtodos que proporciona la clase DefaultTableModel para conocer que
otras cosas puedes realizar con ella.
A continuacin se presenta el listado completo del cdigo que muestra el uso del modelo de tabla
DefaultTableModel :

Ejemplo 2.SimpleTable2.java
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class SimpleTable2 extends JFrame {


public SimpleTable2() {
super("Ejemplo 2");

//array bidimencional de objetos con los datos de la tabla


Object[][] data = {
{"Mary", "Campione",
"Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml",
"Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath",
"Escalar", new Integer(2), new Boolean(false)},
{"Marcus", "Andrews",
"Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth",
"Nadar", new Integer(4), new Boolean(false)}
};

//array de String's con los ttulos de las columnas


String[] columnNames = {"Nombre",
"Apellido",
"Pasatiempo",
"Aos de Practica",
"Soltero(a)"};

//creamos el Modelo de la tabla con los datos anteriores


DefaultTableModel dtm= new DefaultTableModel(data, columnNames);
//se crea la Tabla con el modelo DefaultTableModel
final JTable table = new JTable(dtm);

// una vez creada la tabla con su modelo


// podemos agregar columnas
String[] newColumn= {"Flan",
"Pastel",
"Helado",
"Barquillo"
"Manzana" };
dtm.addColumn("Postre",newColumn);
//filas
Object[] newRow={"Pepe", "Grillo",
"Tenis", new Integer(5), new Boolean(false), "Pera"};

dtm.addRow(newRow);

//o modificar una celda en especifico


dtm.setValueAt("Catherine", 1, 1);
//se define el tamao
table.setPreferredScrollableViewportSize(new Dimension(500, 70));

//Creamos un JscrollPane y le agregamos la JTable


JScrollPane scrollPane = new JScrollPane(table);

//Agregamos el JScrollPane al contenedor


getContentPane().add(scrollPane, BorderLayout.CENTER);

//manejamos la salida
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {


SimpleTable2 frame = new SimpleTable2();
frame.pack();
frame.setVisible(true);
}
}

El resultado de ejecutar el ejemplo anterior ser:

Figura 3. SimpleTable2 en ejecucin


Aqu tenemos otro ejemplo con DefaultTableModel:

Ejemplo 3.SimpleTable3.java
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class SimpleTable3 extends JFrame {


public SimpleTable3() {
super("Ejemplo 3");

//creamos el arreglo de objetos que contendra el


//contenido de las columnas
Object[] data = new Object[5];

// creamos el modelo de Tabla


DefaultTableModel dtm= new DefaultTableModel();

// se crea la Tabla con el modelo DefaultTableModel


final JTable table = new JTable(dtm);

// insertamos las columnas


for(int column = 0; column < 5; column++){
dtm.addColumn("Columna " + column);
}

// insertamos el contenido de las columnas


for(int row = 0; row < 10; row++) {
for(int column = 0; column < 5; column++) {
data[column] = "Celda " + row + "," + column;
}
dtm.addRow(data);
}

//se define el tamao


table.setPreferredScrollableViewportSize(new Dimension(500, 70));

//Creamos un JscrollPane y le agregamos la JTable


JScrollPane scrollPane = new JScrollPane(table);

//Agregamos el JScrollPane al contenedor


getContentPane().add(scrollPane, BorderLayout.CENTER);

//manejamos la salida
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {


SimpleTable3 frame = new SimpleTable3();
frame.pack();
frame.setVisible(true);
}
}

En este segundo ejemplo del uso de la clase DefaultTableModel, creamos primeramente un


array de objetos llamado data que podr contener 5 elementos.
Object[] data = new Object[5];

Despues creamos un modelo de tabla llamado dtm:


DefaultTableModel dtm= new DefaultTableModel();

Antes de cualquier operacion sobre el modelo de tabla, debemos crear la tabla que lo utilizar:
final JTable table = new JTable(dtm);

Ahora, al modelo de tabla le agregamos 5 columnas:


for(int column = 0; column < 5; column++){
dtm.addColumn("Columna " + column);
}

Y por ultimo, insertamos el contenido de las celdas, columna por columna:


for(int row = 0; row < 10; row++) {
for(int column = 0; column < 5; column++) {
data[column] = "Celda " + row + "," + column;
}
dtm.addRow(data);
}

En el fragmento de cdigo anterior, en lugar de hacer una sencilla asignacin de valores


consecutivos a cada celda dentro del ciclo for, podras estar leyendo y asignando directamente el
contenido de: un archivo de texto, una consulta a una base de datos, o alguna otra fuente; ya que,
como hemos visto, tambin es posible agregar filas completas a la tabla.
La siguiente figura muestra el resultado de ejecutar el Ejemplo 3.

Figura 4. SimpleTable3 en ejecucin


Como te podrs dar cuenta, al ejecutar los ejemplos 2 y 3, una de las desventajas de no manejar de
manera directa un modelo de tabla a sido superada; ya es posible agregar directamente valores a las
celdas de la tabla. Sin embargo, las celdas siguen siendo editables, y sus valores siguen siendo
tratados an como String's.
Cuando utilices el modelo de tabla DefaultTableModel debes tener en cuenta que: ste utiliza
un vector de vectores para almacenar los valores de las celdas de la tabla, tiene un desempeo
inferior al de un modelo de tabla personalizado, debido a que sus mtodos estan sincronizados y
que adems en la documentacin oficial, se menciona que la serializacin de objetos que realiza
esta clase no ser compatible con entregas futuras de Swing
As, aunque la utilizacin del modelo de tabla DefaultTableModel es an funcional y
proporciona facilidades para la utilizacion de un modelo de tabla, es mucho ms recomendable, por
cuestiones de desempeo y personalizacin, utilizar la clase AbstractTableModel

AbstractTableModel
Con esta clase es posible implementar, de una manera ms completa y eficiente, los mtodos
necesarios para crear un modelo de tabla.
Para crear un modelo de tabla personalizado, lo primero que necesitamos es extender la clase
AbstractTableModel.
class MyTableModel extends AbstractTableModel {
.....
}

Despus, debemos de implementar los 3 mtodos siguientes:


class MyTableModel extends AbstractTableModel {
public int getRowCount(){
...
}

public int getColumnCount(){


...
}

public Object getValueAt(int row, int column){


...
}
}

Con la implementacin de los mtodos anteriores, las celdas de la tabla NO sern editables y NO
se podrn modificar los valores de cada una de ellas.
Si deseamos tener un mecanismo para modificar los valores de las celdas de la tabla, tenemos
que sobrescribir el mtodo setValueAt de la clase AbstractTableModel:
class MyTableModel extends AbstractTableModel {
public int getRowCount(){
...
}

public int getColumnCount(){


...
}

public Object getValueAt(int row, int column){


...
}

public void setValueAt(Object value, int row, int col) {


...
}
}

Y, si la modificacin de los valores de las celdas, se hace directamente sobre ellas, necesitamos
indicar a nuestro modelo de tabla que las celdas de la tabla sern editables, esto se hace
sobrescribiendo el mtodo isCellEditable:
class MyTableModel extends AbstractTableModel {
public int getRowCount(){
...
}

public int getColumnCount(){


...
}

public Object getValueAt(int row, int column){


...
}

public void setValueAt(Object value, int row, int col){


...
}

public boolean isCellEditable(int row, int col) {


...
}
}

Ms adelante puedes revisar los mtodos restantes que proporciona la clase AbstractTableModel
Ya lo nico que hara falta sera agregar los nombres de las columnas de nuestra tabla y definir su
contenido inicial:
class MyTableModel extends AbstractTableModel {

final String[] columnNames = {


...
}

final Object[][] data = {


...
}

public int getRowCount(){


...
}

public int getColumnCount(){


...
}

public Object getValueAt(int row, int column){


...
}
public void setValueAt(Object value, int row, int col){
...
}

public boolean isCellEditable(int row, int col) {


...
}
}

JTable invoca un mtodo del modelo de tabla para determinar el editor/renderer predeterminado
que utilizar para mostrar el valor de cada celda. Por ejemplo para celdas con valores booleanos
utilizar check box's; este mtodo es: getColumnClass, y tambin es recomendable
implementarlo:
class MyTableModel extends AbstractTableModel {

final String[] columnNames = {


...
}

final Object[][] data = {


...
}

public int getRowCount(){


...
}

public int getColumnCount(){


...
}

public Object getValueAt(int row, int column){


...
}

public void setValueAt(Object value, int row, int col){


...
}

public boolean isCellEditable(int row, int col) {


...
}
public Class getColumnClass(int c) {
...
}
}

Ahora, despues de saber cuales son los mtodos que se necesitan implementar y sobrescribir de la
clase AbstractTableModel para crear nuestro propio modelo de tabla; veremos un ejemplo
que nos muestra ya completa la definicion de la clase:
class MyTableModel extends AbstractTableModel {
final String[] columnNames = {"Nombre",
"Apellido",
"Pasatiempo",
"Aos de Practica",
"Soltero(a)"};
final Object[][] data = {
{"Mary", "Campione",
"Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml",
"Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath",
"Escalar", new Integer(2), new Boolean(false)},
{"Marcus", "Andrews",
"Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth",
"Nadar", new Integer(4), new Boolean(false)}
};

//nicamente retornamos el numero de elementos del


//array de los nombres de las columnas
public int getColumnCount() {
return columnNames.length;
}

//retormanos el numero de elementos


//del array de datos
public int getRowCount() {
return data.length;
}

//retornamos el elemento indicado


public String getColumnName(int col) {
return columnNames[col];
}

//y lo mismo para las celdas


public Object getValueAt(int row, int col) {
return data[row][col];
}

/*
* Este metodo sirve para determinar el editor predeterminado
* para cada columna de celdas
*/
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}

/*
* No tienes que implementar este mtodo a menos que
* las celdas de tu tabla sean Editables
*/
public boolean isCellEditable(int row, int col) {
return true;
}

/*
* No tienes que implementar este mtodo a menos que
* los datos de tu tabla cambien
*/
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}

Si estas utilizando una versin del JDK anterior a la 1.3, debes hacer las siguentes modificaciones al
mtodo setValueAt, ya que antes de esta version era necesario crear manualmente un Integer
a partir del valor recibido, ya que de otra manera, el valor recibido se seguira convirtiendo a un
String, a partir de la Ver. 1.3, la conversion a Intenger es automtica.
//Version del metodo setValuAt para JDK's anteriores a la Ver.1.3
public void setValueAt(Object value, int row, int col) {

if (data[0][col] instanceof Integer


&& !(value instanceof Integer)) {
try {
data[row][col] = new Integer(value.toString());
fireTableCellUpdated(row, col);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(SimpleTable4.this,
"The \"" + getColumnName(col)
+ "\" column accepts only integer values.");
}
} else {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}

Nota: Observa se hace una llamada al mtodo


fireTableCellUptaded(row,col) dentro del mtodo setValueAt
exactamente despus de haber asignado un nuevo valor a la celda especificada; esto es
debido a que, como estamos implementando directamente los mtodos de la clase
AbstracTableModel, debemos notificar explcitamente que una celda determinada
a sido modificada para que se actualice debidamente la vista de la tabla.
Puedes revisar cuales son los otros mtodos fireXXX que proporciona la clase
AbstracTableModel para realizar las notificaciones adecuadas que indican
modificacin sobre la tabla.
Una vez creada nuestra clase podemos instanciarla, y utilizarla para construir una tabla, asi:
MyTableModel myModel = new MyTableModel();
JTable table = new JTable(myModel);

El siguiente codigo, muestra la utilizacin de la clase MyTableModel; en este ejemplo, sta clase
aparece en la aplicacion principal como una clase secundaria:

Ejemplo 4.SimpleTable4.java
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;

public class SimpleTable4 extends JFrame {

public SimpleTable4() {
super("SimpleTable4");

MyTableModel myModel = new MyTableModel();


JTable table = new JTable(myModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));

//Creatamos un contenedor para la Tabla


JScrollPane scrollPane = new JScrollPane(table);
//Agregamos nuestra tabla al contenedor
getContentPane().add(scrollPane, BorderLayout.CENTER);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

class MyTableModel extends AbstractTableModel {


final String[] columnNames = {"Nombre",
"Apellido",
"Pasatiempo",
"Aos de Practica",
"Soltero(a)"};
final Object[][] data = {
{"Mary", "Campione",
"Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml",
"Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath",
"Escalar", new Integer(2), new Boolean(false)},
{"Marcus", "Andrews",
"Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth",
"Nadar", new Integer(4), new Boolean(false)}
};

//nicamente retornamos el numero de elementos del


//array de los nombres de las columnas
public int getColumnCount() {
return columnNames.length;
}

//retormanos el numero de elementos


//del array de datos
public int getRowCount() {
return data.length;
}

//retornamos el elemento indicado


public String getColumnName(int col) {
return columnNames[col];
}

//y lo mismo para las celdas


public Object getValueAt(int row, int col) {
return data[row][col];
}

/*
* Este metodo sirve para determinar el editor predeterminado
* para cada columna de celdas
*/
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}

/*
* No tienes que implementar este mtodo a menos que
* las celdas de tu tabla sean Editables
*/
public boolean isCellEditable(int row, int col) {
return true;
}

/*
* No tienes que implementar este mtodo a menos que
* los datos de tu tabla cambien
*/
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}

public static void main(String[] args) {


SimpleTable4 frame = new SimpleTable4();
frame.pack();
frame.setVisible(true);
}
}

El resultado de ejecutar el cdigo anterior es el siguiente:

Figura 5. SimpleTable4 en ejecucin


Podemos ver que, en efecto, en la ultima columna aparece una check box para mostrar los valores
booleanos, ya que implementamos el mtodo getColumnClass.

La API JTable
Campos
Resumen de los Campos
Campo Descripcin
Proporciona el Cambio de tamao
static int AUTO_RESIZE_ALL_COLUMN
de Todas las columnas durante las
S
operaciones de cambio de tamao
Durante todas las operaciones de
static int AUTO_RESIZE_LAST_COLUM
cambio de tamao, aplica el ajuste
N
nicamente a la ltima columna
Cuando una columna se ajusta,
static int AUTO_RESIZE_NEXT_COLUM
este campo ajusta la siguiente, de
N
forma opuesta
Utiliza una barra de
static int AUTO_RESIZE_NEXT_OFF desplazamiento para ajustar el
ancho de la columna
Cambia las columnas siguientes
static int AUTO_RESIZE_SUBSEQUENT
para preservar el ancho total; este
_COLUMNS
es el comportamiento por omisin
Si tiene el valor de true, la tabla
protected boolean autoCreateColumnsFromModel consulta al TableModel para
construir el conjunto de columnas
Determina si la tabla cambia
protected int automticamente el tamao de la
AutoResizeMode
anchura de sus columnas para
ocupar el ancho total de la tabla
protected Un objeto que sobrescribe la celda
TableCellEditor cellEditor actual y permite al usuario cambiar
sus contenidos
protected boolean cellSelectionEnabled Obsoleto desde la versin 1.3
protected El TableColumnModel de la
TableColumnModel columnModel
tabla
protected El TableModel de la
TableModel dataModel
table
Una tabla de objetos que muestra y
edita el contenido de cada
celda,indexado por clase como
protected Hashtable defaultEditorsByColumnClass
esta declarado en
getColumnClass en la
interface TableModel
Una tabla de objetos que muestra
el contenido de cada
celda,indexado por clase como
protected Hashtable defaultRenderersByColumnClass
esta declarado en
getColumnClass en la
interface TableModel
protected int Identifica la columna de la celda
editingColumn
que esta siendo editada
protected int Identifica la Fila de la celda que
editingRow
esta siendo editada
protected Component editorComp El componente que procesa la
edicin
protected Color gridColor El color de la rejilla(grid)
Utilizado por la interface
protected Dimension preferredViewportSize Scrollable para determinar el
area inicial visible
protected int La altura -en pixeles- de las filas
rowHeight
de la tabla
protected int La altura -en pixeles- del margen
rowMargin
entre las celdas en cada fila
Devuelve true si se permite
protected boolean rowSelectionAllowed
seleccin de fila en esta tabla
protected Color El color de fondo de las celdas
selectionBackground
seleccionadas
protected Color El color de primer plano de las
selectionForeground
celdas seleccionadas
El ListSelectionModel de
protected
ListSelectionModel selectionModel la tabla; se utiliza para controlar
las filas seleccionadas
Las lneas horizontales se dibujan
protected boolean showHorizontalLines entre las celdas cuando el campo
esta en true
Las lneas verticales se dibujan
protected boolean showVerticallLines entre las celdas cuando el campo
esta en true
protected El JTableHeader que funciona
JTableHeader tableHeader
con la tabla

Constructores
Constructores
Constructor Descripcin
JTable() Construye un JTable() predeterminado
JTable(int numRows, int Construye un JTable()con numRows y numColumns
numColumns) de celdas vacas, utilizando DefaultTableModel
Construye un JTable() visualizando los valores de
JTable(Object[][] rowData,
rowData en una matriz bidimencional, utilizando
Object[] columnNames)
columnNames como nombres para las columnas
Construye un JTable() con dm como modelo de tabla,
JTable(TableModel dm) un modelo de columna predeterminado y un modelo de
seleccion predeterminado
Construye un JTable() con dm como modelo de tabla,
JTable(TableModel dm,
TableColumnModel cm) cm como modelo de columna y un modelo de seleccion
predeterminado
JTable(TableModel dm, Construye un JTable() con dm como modelo de tabla,
TableColumnModel cm, cm como modelo de columna y sm como modelo de
ListSelectionModel sm) seleccin
Construye un JTable() para visualizar los valores del
JTable(Vector rowData,
Vector de Vectores, rowData, con nombres de
Vector columnNames)
columnas dados en columnNames

Mtodos
Mtodos
Mtodo Descripcin
Aade la columna aColumn al final de la
void addColumn(TableColumn aColumn)
matriz de columnas
addColumnSelectionInterval(int Aade las columnas desde index0 a
void
index0, int index1) index1, incluidam a la seleccin actual
void llama al mtodo
addNotify() configureEnclosingScrollPane
void addRowSelectinInterval(int index0, Aade las filas desde index0 a
int index1) index1,incluida, a la seleccin actual
void Deselecciona todas las columnas y filas
clearSelection()
seleccionadas
void columnAdd(TableColumnModelEve Invocado cuando una columna es agregada
nt e) al modelo de columa
Obtiene el ndice de la columna en que
int columnAtPoint(Point point) point reside, o -1 si esta fuera del
rango[0, getcolumn()-1]
void columnMarginChanged(ChangeEve Invocado cuando una columna se mueve
nt e) debido al cambio de margenes
void columnMoved(TableColumnModelE Invocado cuando una columna cambia de
vent e) posicin
void columnRemoved(TableColumnMod Invocado cuando una columna es
elEvent e) removida del modelo de columnas actual
void columnSelectionChanged(ListSelecti Invodado cuando el modelo de seleccin
onEvent e) del TableColumnModel a cambiado
Configura los JScrollPane constenidos
instalando el TableHeader de la tabla,
protected void configureEnclosingScrollPane() columnHeaderView del panel
de desplazamiento y as
sucesivamente
Mapea el indice de la columna de la vista
convertColumnIndextoModel(int
int en viewColumnIndex al ndice de la
viewColumnIndex)
columna en el modelo de la tabla
Mapea el indice de la columna en el
convertColumnIndexToView(int modelo de tabla en
int
modelColumnIndex) modelColumnIndex al ndice de la
columna en la vista
protected Obtiene el modelo de objeto de columna
TableColumnModel createDefaultColumnModel() predeterminado, que es un
DefaultTableColumnModel
Crea columnas predeterminadas para la
tabla a partir del modelo de datos
utilizando los mtodos
void createDefaultColumnsFromModel() getColumnCount() y
getColumnClass() definidos en la
interface TableModel
protected Obtiene el modelo de objetos de la tabla
TableModel createDefaultDataModel() predeterminado, que es un
DefaultTableModel
Crea editores de celdas predeterminados
protected void createDefaultEditors()
para objetos, nmeros y boolenos
Crea renderizadores predeterminados para
protected void createDefaultRenderers() objetos, nmeros, doubles, dates,
booleanos, e iconos
protected Devuelve el modelo de seleccin de
ListSelectionModel createDefaultSelectionModel() objetos predeterminado, que es un
DefaultSelectionModel
static JScrollPane createScrollPaneForTable(JTable a Obsoleto. Reemplazado por
table) JScrollPane(aTable)
Inicia la edicin en la celda situada en
boolean editCellAt(int row, int col)
row, col, si sta es editable
editCellAt(int row, int col, Inicia la edicin en la celda situada en
boolean
EventObject e) row, col, si sta es editable
void editingCanceled(ChangeEvent e) llamado cuando la edicin se cancela
void editingStoped(ChangeEvent e) llamado cuando termina la edicin
Obtiene el AccessibleContext
AccessibleContext getAccessibleContext()
asociado con la JTable
Determina si la tabla es capaz de crear
boolean getAutoCreateFromModel() colunas predeterminadas a partir del
modelo actual
int Obtiene el modo de cambio de tamao
getAutoResizeMode()
automtico de la tabla
TableCellEditor getCellEditor() Devuelve el cellEditor
Obtiene el editor adecuado para la celda
TableCellEditor getCellEditor(int row, int column)
situada en row y column
Devuelve un Rectangle que localiza la
getCellRect(int row, int column,
Rectangle celda que reside en la interseccin de row
boolean includeSpacing)
y column
Devuelve un rederizador adecuado para la
TableCellRenderer getCellRenderer(int row, int column)
celda ubicada en row y column
Devuelve true si la seleccion de
boolean getCellSelectionEnabled()
columnas y filas esta habilitada
Devuelve el objeto TableColumn para la
TableColumn columna en la tabla cuyo indicador sea
getColumn(Object identifier)
igual a identifier, cuando se compara
utilizando equals
Class Devuelve el tipo de columna en una
getColumnClass(int column)
posicin de la vista dada
Devuelve el nmero de columnas del
int modelo de columna(ste numero puede ser
getColumnCount()
distinto del nmero de columnas en el
modelo de la tabla)
Devuelve el TableColumnModel que
TableColumnModel getColumnModel() contiene toda la informacin de columnas
de la tabla
Obtiene el nombre de la columna en la
String getColumnName(int column)
posicin column de la vista actual
Devuelve true si se pueden seleccionas
boolean getColumnSelectionAllowed()
las columnas
Devuelve el editor que se debe utilizar
getDefaultEditor(Class
TableCellEditor cuando no se ha configurado nign editor
columnClass)
en un TableColumn
TableCellRenderer getDefaultRenderer(Class Devuelve el renderizador que se debe
columnClass) utilizar cando no se ha seleccionado un
renderizador en un TableColumn
Devuelve el ndice de la columna de la
int getEditingColumn() celda que se encuentra actualmente en
edicin
int Devuelve el ndice de la fila de la celda
getEditingRos()
que se encuentra actualmente en edicin
Component Devuelve el componente que esta
getEditorComponent()
manejando la sesin de edicin
Color Devuelve Devuelve el color utilizado para
getGridColor()
dibujar las lneas de la rejilla
Dimension Devuelve el espaciamiento vertical y
getInterCellSpacing()
horizontal entre celdas
Retorna el TableModel que proporciona
TableModel getModel()
los datos mostrados por el receptor
getPreferredScrollableViewPortSize( Devuelve el tamao predefinido del
Dimension
) ViewPort para la tabla
int getRowCount() Devuelve el nmero de filas en la tabla
int Devuelve la altura, en pixeles, de una fila
getRowHeght()
de la tabla
int Devuelve la cantidad de espacio libre entre
getRowMargin()
las filas
Devuelve true si se pueden seleccionas
boolean getRowSelectionAllowed()
las filas
getScrollableBlockIncrement(Rectan Devuelve el visibleRect.height o
int gle visibleRect, int orientation, int visibleRect.width dependiendo de
direction) la orientacin de la tabla
Devuelve true si la altura del
boolean getScrollableTracksViewportHeight(
ViewPort no determina la altura de la
)
tabla
Devuelve true si la anchura del
boolean getScrollableTracksViewportWidth() ViewPort no determina la anchura de la
tabla
getScrollableUnitIncrement(Rectang Devuelve el incremento en
int le visibleRect, int orientatio, int desplazamiento, en pixeles, que expone
direction) completamente una nueva fila o columna
Devuelve el ndice de la primera columna
int getSelectedColumn() seleccionada -1 si no hay columna
seleccionada
int Devuelve el nmero de columnas
getSelectedColumnCount()
seleccionadas
int [] Obtiene los ndices de todas las columnas
getSelectedColumns()
seleccionadas
Devuelve el ndice de la primera fila
int getSelectedRow() seleccionada -1 si no existen filas
seleccionadas
int getSelectedRow() Devuelve el nmero de filas seleccionadas
int [] Obtiene los ndices de todas las filas
getSelectedRows()
seleccionadas
Color Obtiene el color de fondo para las celdas
getSelectionBackground()
seleccionadas
Color Obtiene el color de primer plano para las
getSelectionForeground()
celdas seleccionadas
Obtiene el ListSelectionModel que
ListSelectionModel getSelectionModel() se utiliza para mantener el estado de
seleccin de la fila
Devuelve true si el recetor dibuja lneas
boolean getShowHorizontalLines() horizontales entre las celdas y false si
no es as
Devuelve true si el recetor dibuja lneas
boolean getShowVerticaltalLines() verticales entre las celdas y false si no
es as
Devuelve el tableHeaderutilizado por
JTableHeader getTableHeader()
la tabla
Devuelve el objeto L&F que renderiza este
TableUI getUI()
componente
Object Devuelve el valor de la celda ubicada en
getValueAt(int row, int column) row, column
protected void Inicia las propiedades de tabla con sus
initializeLocalVars()
valores predeterminados
Devuelve true si la celda ubicada en
boolean isCellEditable(int row, int column)
row, column puede editarse
Devuelve true si la celda ubicada en
boolean isCellSelected(int row, int column)
row, column esta seleccionada
Devuelve true si la columna ubicada en
boolean isColumnSelected(int column)
column esta seleccionada
Devuelve true si la tabla esta editando
boolean isEditing()
una celda
boolean isManagingFocus() Sobrescrito para devolver true
Devuelve true si la fila ubicada en row
boolean isRowSelected(int row)
esta seleccionada
Mueve la columna column a la posicin
void moveColumn(int column, int
ocupada actualmente por la columna
targetColumn)
targetColumn
Devuelve una representacion en String
protected String paramString()
de la Tabla
Component prepareEditor(TableCellEditor Prepara el editpr dado utilizando el valor
editor, int row, int column) de la celda dada
prepaRenderer(TableCellRenderer Prepara el renderizador dado con un valor
Component
renderer, int row, int column) adecuado del DataModel
processKeyBinding(KeyStroke ks, Invocado para procesar el conjunto de
protected boolean KeyEvent e, int condition, boolean teclas para ks, como resultado de procesar
pressed) KeyEvent e
removeColumn(TableColumn Elimina la columna aColumn de la matiz
void
aColumn) de columnas de la JTable

void removeColumnSelectionInterval(int Deselecciona las columnas, desde


index0, int index1) index0hasta index1, incluyendolo
void removeEditor() Descarta el objeto editor
removeRowSelectionInterval(int Deselecciona las filas, desde index0hasta
void
index0, int index1) index1, incluyendolo
Equivalente a llamar a revalidate()
protected void resizeAndRepaint()
seguido de repaint()
Devuelve el ndice de la fila sobre la cual
se situua el punto point, -1 si el
int rowAtPoint(Point point)
resultado no esta en el rango [0,
getColumnCount()-1]
void Selecciona todas las columnas, filas y
selectAll()
celdas en la tabla
Asingna el indicador
void setAutoCreateColumnsFromModel() autocreateColumnsFromModel de
la tabla
Activa el modo de cambio de tamao
void setAutoResize() automtico de la tabla cuando sta cambia
de tamao
setCellEditor(TableCellEditor
void Asigna la variable cellEditor
anEditor)
Determina si la tabla permitir tanto la
void setCellSelectionEnabled(boolean
seleccin de filas como de columnas al
flag)
mismo tiempo
Asigna el modelo de columna para esta
tabla a newModel y registra receptores de
void setColumnModel()
notificacin para el nuevo modelo de
columna
void setColumnSelectionAllowed(boolea Asigna si las columnas de esta tabla
n flag) pueden ser seleccionadas
void setColumnSelectionInterval(int Selecciona las columnas desde index0,
index0, int index1) hasta index1, incluido
Asigna el editor predeterminado que debe
void setDefaultEditor(Class columnClass,
utilizarse si no se asigna un editor a un
TableCellEditor editor) TableColumn
setDefaultRenderer(Class Asigan un renderizador predeterminado
void columnClass, TableCellRenderer que se utilizar si no se asigna un
renderer) renderizador a TableColumn
void setEditingColumn(int acolumn) Asigna la variable editingColumn
void setEditingRow(int aRow) Asigna la variable editingRow
Asigna el color utilizado para dibujar las
void setGridColor(Color newColor) lneas de la rejilla con newColor y
visualiza de nuevo el receptor
void setIntercellSpacing(Dimension Asigna la anchura y altura entre las celdas
newSpacing) a newSpacing y dibuja de nuevo el
receptor
Asigna el modelo de datos para esta tabla a
newModel y registra los receptores de
void setModel(TableModel newModel)
modificaciones para el nuevo modelo de
datos
setPreferredScrollableViewportSize( Asigna el tamao del viewport para esta
void
Dimension size) tabla
Asigna la altura newHeight, en pixeles,
void setRowHeight(int newHeight)
de las filas
setRowHeight(int row, int Asigna la altura newHeight, en pixeles,
void
newHeight) de la fila row
void Asigna la cantidad de espacio libre entre
setRowMargin(int newMargin)
las filas
void setRowSelectionAllowed(boolean Asigna si las filas de esta tabla pueden ser
flag) seleccionadas
void setRowSelectionInterval(int index0, Selecciona las filas desde index0, hasta
int index1) index1, inclusive
void setSelectionMackgrond(Color Asigna el color de fondo para las celdas
selectionBackground) seleccionadas
void setSelectionForeground(Color Asigna el color de primer plano para las
selectionForeground) celdas seleccionadas
Asigna el modo de seleccin de tabla para
void setSelectionMode(int
permitir seleccin simple, un intervalo
selectionMode)
simple continuo intervalos mltiples
setSelectionModel(ListSelectionMo Asigna el modelo de seleccin de filas
void
del newModel) newModel para esta tabla
void Asigna si se dibujan las lneas alrededor de
setShowGrid(boolean b)
las celdas
void Asigna si se dibujan lneas horizontales
setShowHorizontalLines(boolean b)
entre las celdas
void Asigna si se dibujan lneas verticales entre
setShowVerticalLines(boolean b)
las celdas
setTableHeader(JTableHeader Asigna el tableHeader que trabaja con
void
newHeader) esta tabla a newHeader
Asigna el L&F que renderiza este
void setUI(TableUI ui)
componente
setValueAt(Object aValue, int row, Asigna el objeto aValue a la celda
void
int column) ubicada en row, column
void setSizeColumnsToFit(boolean Obsoleto. reemplazado por
lastColumnOnly) sizeClumnsToFit(int)
Cambia el tamao de una o s columnas en
setSizeColumnsToFit(int la tabla para que la anchura total de todas
void
resizingColumn) las columnas de la JTable sea igual a la
anchura de la tabla
Invocado cuando el TableModel de la
void tableChanged(TableModelEvent e)
tabla genera un TableModelEvent
Anula los efectos de
configureEnclosingScrollPane
void unconfigureEnclosingScrollPane() reemplazando columnHeaderView del
panel de desplazamiento por null
Llamado por UIManager cuando se
void updateUI()
cambia el L&F
void valueChanged(ListSelectionEvent e) Invocado cuando cambia la seleccin

La API DefaultTableModel
Campos
Resumen de los Campos
Campo Descripcin
protected Vector columnIdentifiers Un vector de identificadores de columna
protected Vector dataVector Un vector de valores Object

Constructores
Resumen de los Constructores
Constructor Descripcin
DefaultTableModel() Construye un DefaultTableModel
DefaultTableModel(int Construye un DefaultTableModel con numRows y
numRows, int numColumns) numColumns
DefaultTableModel(Object[] Construye un DefaultTableModel e inicia la tabla
[] data, Object[] pasando data y columnNames al mtodo
columnNames) setDataVector()
Construye un DefaultTableModel con un nmero
DefaultTableModel(Object[]
columnNames, int numRows) de columnas equivalentes al nmero de elementos o
valores nulos en columnNames y numRows
Construye un DefaultTableModel con un nmero
DefaultTableModel(Vector
columnNames, int numRows) de columnas equivalentes al nmero de elementos o
valores nulos en columnNames y numRows
Construye un DefaultTableModel e inicia la tabla
DefaultTableModel(Vector
data, Vector columNames) pasando data y columnNames al mtodo
setDataVector()

Mtodos
Resumen de los Mtodos
Mtodo Descripcin
void addColumnn(Object
Aade una columna al modelo
columnName)
addColumnn(Object
void columnName, Object[] Aade una columna al modelo
columnData)
addColumnn(Object
void columnName, Vector Aade una columna al modelo
columnData)
void addRow(Object[] rowData) Aade una fila al final de modelo
void addRow(Vector rowData) Aade una fila al final de modelo
public
convertToVector(Object[] Obtiene un Vector que contiene los mismos
static
Vector anArray) objetos que el array
public
convertToVector(Object[][] Obtiene un Vector de vectores que contiene
static
Vector anArray) los mismos valores que la matriz anArray

int Devuelve el nmero de columnas en esta tabla


getColumnCount()
de datos
String getColumnName(int column) Aade una fila al final de modelo
Devuelve el Vector de Vectores que contiene
Vector getDataVector
los valores de datos de la tabla
int Devuelve el nmero de filas en esta tabla de
getRowCount()
datos
Devuelve un valor de atributo para la celda en
Object getValueAt(int row, int column)
la posicin row, column
insertRow(int row, Object[][]
void Inserta una fila en row en el modelo
rowData)
insertRow(int row, Vector
void Inserta una fila en row en el modelo
rowData)
isCellEditable(int row, int Devuelve true si la celda ubicada en row,
boolean
column) column se puede editar
Muee una o ms filas comenzando desde
void moveRow(int startIndex,
starIndex hasta endIndex y las coloca en
endIndex, int toIndex)
toIndex
newDataAvailable(TableModelE
void Equivalente a fireTableChanged()
vent event)
void newRowsAdded(TableModelEve Este mtodo permite asegurar que las nuevas
nt event) filas tienen el nmero correcto de columnas
void removeRow(int row) Elimina del modelo la fila ubicada en row
rowsRemoved(TableModelEvent
void Equivalente a fireTableChanged()
event)
void setColumnsIdentifiers(Object[] Reemplaza los identificadores de columna del
newIdentifiers) modelo
void setColumnsIdentifiers(Vector Reemplaza los identificadores de columna del
newIdentifiers) modelo
setDataVector(Object[][] Reemplaza el valor de la variable de instancia
void newData, Object[] dataVector por los valores de la matriz
columnNames) newData
Reemplaza el valor de la variable de instancia
void setDataVector(Vector newData,
dataVector por los valores del Vector:
Vector columnNames)
newData
void setNumRows(int newSize) Asigna el nmero de filas del modelo.Obsoleto
desde la v1.3
void setRowCount(int rowCount) Fija el nmero de filas del modelo
setValueAt(Object aValue, int
void Asigna el valor del objeto para row y column
row, int column)

La API AbstractTableModel

Campos
Resumen de los Campos
Campo Descripcin
protected EventListener ListenerList La lista de todos los Listener

Constructores
Constructores
Constructor Descripcin
AbstractTableModel()

Mtodos
Resumen de los Mtodos
Mtodo Descripcin
Agrega a un listener a la lista que se notifica
void addTableModelListener(TableM
cada vez que ocurre un cambio al modelo de
odelListener l)
los datos
int findColumn(String
Retorna una columna dado su nombre
columnName)
Notifica a todos los listeners que el valor de
fireTableCellUpdated(int row,
void la celda[firstRow, lastRow], ha
int column)
sido actualizado
Reenvia la notificacion del evento dado a
void fireTableChanged(TableModelE todos los TableModelListeners que
vent e) se registraron como listener para este
modelo de tabla
Notifica a todos los listeners que el valor de
void fireTableDataChanged() todas las celdas en la tabla, pueden haber
cambiado
Notifica a todos los listeners que las filas
void fireTableRowsDeleted(int dentro del rango [firstRow,
firstRow, int lastRow)
lastRow], inclusive, han sido eliminadas
Notifica a todos los listeners que las filas
void fireTableRowsInserted(int dentro del rango [firstRow,
firstRow, int lastRow)
lastRow], inclusive, han sido insertadas
Notifica a todos los listeners que las filas
fireTableRowsUpdated(int dentro del rango [firstRow,
void
firstRow, int lastRow) lastRow], inclusive, han sido
actualizadas
void Notifica a todos los listeners que la
fireTableStructuredChanged()
estructura de la tabla a sido actualizada
getColumnClass (int Retorna un Object.class sin tomar en
Class
columnIndex) cuenta a columnIndex
Retorna un nombre predefinido para la
String getColumnName(int column) columna usando el estilo de la hoja de
clculo: A, B, C,...
EventListener Devuelve un areglo con todos los listener
[] getListeners(Class listenerType)
del tipo dado en este modelo.
Retorna false; pero se puede
boolean isCellEditable(int rowIndex, int
sobreescribir y devolver true para que las
columnIndex)
celdas sean editables
Elimina un listener de la lista, esta se
void removeTableModelListener(Tabl
notifica cada vez que ocurre un cambio en
eModelListener l)
el modelo de datos.
Es un mtodo vaco que no debe ser
void setValueAt(Object aValue, int
implementado si el modelo de datos no es
rowIndex, int columnIndex)
editable

Comentarios finales
Como hemos visto, la creacin de tablas se convierte en una tarea sencilla cuando comenzamos a
conocer las clases auxiliares que la acompaan para mejorar su rendimiento y eficiencia; la
finalidad de este primer artculo es precisamente empezar a familializarte con estas clases, en
futuros artculos comenzaremos a tratar el manejo de eventos relacionados con las tablas y la
realizacin de tareas ms complejas.

S-ar putea să vă placă și