Professional Documents
Culture Documents
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.
1 de 27
http://www.javahispano.org
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 =
2 de 27
Jtable (parte 1)
{"Nombre", "Apellido", "Pasatiempo", "Aos de Practica",
"Soltero(a)"};
"Esquiar",
"Patinar",
"Escalar",
"Correr",
"Nadar",
new
new
new
new
new
Integer(5),
Integer(3),
Integer(2),
Integer(7),
Integer(4),
new
new
new
new
new
Boolean(false)},
Boolean(true)},
Boolean(false)},
Boolean(true)},
Boolean(false)}
javax.swing.JTable;
javax.swing.JScrollPane;
javax.swing.JPanel;
javax.swing.JFrame;
java.awt.*;
java.awt.event.*;
3 de 27
http://www.javahispano.org
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);
}
}
4 de 27
Jtable (parte 1)
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 .
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
5 de 27
http://www.javahispano.org
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)"};
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
6 de 27
Jtable (parte 1)
DefaultTableModel :
Ejemplo 2.SimpleTable2.java
import
import
import
import
import
import
import
javax.swing.JTable;
javax.swing.table.DefaultTableModel;
javax.swing.JScrollPane;
javax.swing.JPanel;
javax.swing.JFrame;
java.awt.*;
java.awt.event.*;
7 de 27
http://www.javahispano.org
javax.swing.JTable;
javax.swing.table.DefaultTableModel;
javax.swing.JScrollPane;
javax.swing.JPanel;
javax.swing.JFrame;
java.awt.*;
java.awt.event.*;
8 de 27
Jtable (parte 1)
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);
}
}
Antes de cualquier operacion sobre el modelo de tabla, debemos crear la tabla que lo utilizar:
final JTable table = new JTable(dtm);
9 de 27
http://www.javahispano.org
dtm.addColumn("Columna " + column);
}
Con esta clase es posible implementar, de una manera ms completa y eficiente, los mtodos
necesarios para crear un modelo de tabla.
10 de 27
Jtable (parte 1)
Para crear un modelo de tabla personalizado, lo primero que necesitamos es extender la clase
AbstractTableModel.
class MyTableModel extends AbstractTableModel {
.....
}
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(){
...
}
11 de 27
http://www.javahispano.org
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:
12 de 27
Jtable (parte 1)
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() {
13 de 27
http://www.javahispano.org
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) {
14 de 27
Jtable (parte 1)
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 exact
asignado un nuevo valor a la celda especificada; esto es debido a que, como estamos implementando directamente los mtod
AbstracTableModel, debemos notificar explcitamente que una celda determinada a sido modificada para que se actualice
la tabla.
Puedes revisar cuales son los otros mtodos fireXXX que proporciona la clase AbstracTableModel para realizar las notifi
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
import
import
import
import
import
import
import
javax.swing.JTable;
javax.swing.table.AbstractTableModel;
javax.swing.JScrollPane;
javax.swing.JFrame;
javax.swing.SwingUtilities;
javax.swing.JOptionPane;
java.awt.*;
java.awt.event.*;
15 de 27
http://www.javahispano.org
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;
16 de 27
Jtable (parte 1)
fireTableCellUpdated(row, col);
}
}
public static void main(String[] args) {
SimpleTable4 frame = new SimpleTable4();
frame.pack();
frame.setVisible(true);
}
}
La API JTable
Campos
Resumen de los Campos
Campo
Descripcin
static int
AUTO_RESIZE_ALL_CO
LUMNS
static int
AUTO_RESIZE_LAST_C
OLUMN
static int
static int
static int
protected
boolean
autoCreateColumnsFrom
Model
protected int
AutoResizeMode
17 de 27
http://www.javahispano.org
protected
TableCellEditor
cellEditor
protected
boolean
cellSelectionEnabled
protected
columnModel
TableColumnModel
El TableColumnModel de la tabla
protected
TableModel
dataModel
El TableModel de la table
protected
Hashtable
protected
Hashtable
protected int
editingColumn
protected int
editingRow
protected
Component
editorComp
protected Color
gridColor
El color de la rejilla(grid)
protected
Dimension
preferredViewportSize
protected int
rowHeight
protected int
rowMargin
La altura -en pixeles- del margen entre las celdas en cada fila
protected
boolean
rowSelectionAllowed
protected Color
selectionBackground
protected Color
selectionForeground
protected
ListSelectionMod selectionModel
el
protected
boolean
showHorizontalLines
protected
boolean
showVerticallLines
protected
JTableHeader
tableHeader
Constructores
Constructores
Constructor
Descripcin
JTable()
JTable(Object[][] rowData,
Object[] columnNames)
18 de 27
Jtable (parte 1)
JTable(TableModel dm)
JTable(TableModel dm,
TableColumnModel cm)
JTable(TableModel dm,
TableColumnModel cm,
ListSelectionModel sm)
Mtodos
Mtodos
Mtodo
Descripcin
void
addColumn(TableColumn
aColumn)
void
addColumnSelectionInterval(int
index0, int index1)
void
addNotify()
void
void
clearSelection()
void
int
columnAtPoint(Point point)
void
void
columnMoved(TableColumnModel
Invocado cuando una columna cambia de posicin
Event e)
void
void
protected void
configureEnclosingScrollPane()
int
convertColumnIndextoModel(int
viewColumnIndex)
int
convertColumnIndexToView(int
modelColumnIndex)
protected
TableColumnMod
el
createDefaultColumnModel()
void
19 de 27
http://www.javahispano.org
protected
TableModel
createDefaultDataModel()
protected void
createDefaultEditors()
protected void
createDefaultRenderers()
protected
ListSelectionM
odel
createDefaultSelectionModel()
static
JScrollPane
createScrollPaneForTable(JTable
a table)
boolean
boolean
void
editingCanceled(ChangeEvent e)
void
editingStoped(ChangeEvent e)
AccessibleCont
ext
getAccessibleContext()
boolean
getAutoCreateFromModel()
int
getAutoResizeMode()
TableCellEdito
r
getCellEditor()
Devuelve el cellEditor
TableCellEdito
r
Rectangle
TableCellRende
rer
boolean
getCellSelectionEnabled()
TableColumn
getColumn(Object identifier)
Class
getColumnClass(int column)
int
getColumnCount()
TableColumnMod
el
getColumnModel()
String
getColumnName(int column)
boolean
getColumnSelectionAllowed()
TableCellEdito
r
getDefaultEditor(Class
columnClass)
20 de 27
Jtable (parte 1)
TableCellRende
rer
getDefaultRenderer(Class
columnClass)
int
getEditingColumn()
int
getEditingRos()
Component
getEditorComponent()
Color
getGridColor()
Dimension
getInterCellSpacing()
TableModel
getModel()
Dimension
int
getRowCount()
int
getRowHeght()
int
getRowMargin()
boolean
getRowSelectionAllowed()
int
getScrollableBlockIncrement(Rect
angle visibleRect, int orientation,
int direction)
Devuelve el visibleRect.height o
visibleRect.width dependiendo de la orientacin de
la tabla
boolean
boolean
int
getScrollableUnitIncrement(Recta
ngle visibleRect, int orientatio, int
direction)
int
getSelectedColumn()
int
getSelectedColumnCount()
int []
getSelectedColumns()
int
getSelectedRow()
int
getSelectedRow()
int []
getSelectedRows()
Color
getSelectionBackground()
Color
getSelectionForeground()
ListSelectionM
odel
getSelectionModel()
boolean
getShowHorizontalLines()
boolean
getShowVerticaltalLines()
JTableHeader
getTableHeader()
21 de 27
http://www.javahispano.org
TableUI
getUI()
Object
protected void
initializeLocalVars()
boolean
boolean
boolean
isColumnSelected(int column)
boolean
isEditing()
boolean
isManagingFocus()
boolean
isRowSelected(int row)
void
protected
String
paramString()
Component
prepareEditor(TableCellEditor
editor, int row, int column)
Component
protected
boolean
void
removeColumn(TableColumn
aColumn)
void
void
removeEditor()
void
removeRowSelectionInterval(int
index0, int index1)
protected void
resizeAndRepaint()
int
rowAtPoint(Point point)
void
selectAll()
void
void
setAutoResize()
void
setCellEditor(TableCellEditor
anEditor)
void
setCellSelectionEnabled(boolean
flag)
void
setColumnModel()
22 de 27
Jtable (parte 1)
void
void
setColumnSelectionInterval(int
index0, int index1)
void
setDefaultEditor(Class
columnClass, TableCellEditor
editor)
void
setDefaultRenderer(Class
columnClass, TableCellRenderer
renderer)
void
setEditingColumn(int acolumn)
void
setEditingRow(int aRow)
void
setGridColor(Color newColor)
void
setIntercellSpacing(Dimension
newSpacing)
void
setModel(TableModel newModel)
void
setPreferredScrollableViewportSiz
Asigna el tamao del viewport para esta tabla
e(Dimension size)
void
setRowHeight(int newHeight)
void
void
setRowMargin(int newMargin)
void
setRowSelectionAllowed(boolean
flag)
void
setRowSelectionInterval(int
index0, int index1)
void
setSelectionMackgrond(Color
selectionBackground)
void
setSelectionForeground(Color
selectionForeground)
void
setSelectionMode(int
selectionMode)
void
setSelectionModel(ListSelectionM
odel newModel)
void
setShowGrid(boolean b)
void
setShowHorizontalLines(boolean
b)
void
setShowVerticalLines(boolean b)
void
setTableHeader(JTableHeader
newHeader)
void
setUI(TableUI ui)
void
setValueAt(Object aValue, int row, Asigna el objeto aValue a la celda ubicada en row,
int column)
column
void
setSizeColumnsToFit(boolean
lastColumnOnly)
23 de 27
http://www.javahispano.org
void
setSizeColumnsToFit(int
resizingColumn)
void
tableChanged(TableModelEvent
e)
void
unconfigureEnclosingScrollPane()
void
updateUI()
void
valueChanged(ListSelectionEvent
e)
La API DefaultTableModel
Campos
Resumen de los Campos
Campo
Descripcin
protected Vector
columnIdentifiers
protected Vector
dataVector
Constructores
Resumen de los Constructores
Constructor
Descripcin
DefaultTableModel()
Construye un 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)
Mtodos
Resumen de los Mtodos
Mtodo
Descripcin
void
addColumnn(Object columnName)
void
addColumnn(Object columnName,
Object[] columnData)
24 de 27
Jtable (parte 1)
void
addColumnn(Object columnName,
Vector columnData)
void
addRow(Object[] rowData)
void
addRow(Vector rowData)
public
static
Vector
convertToVector(Object[] anArray)
public
static
Vector
convertToVector(Object[][] anArray)
int
getColumnCount()
String
getColumnName(int column)
Vector
getDataVector
int
getRowCount()
Object
void
void
boolean
void
void
newDataAvailable(TableModelEvent
Equivalente a fireTableChanged()
event)
void
newRowsAdded(TableModelEvent
event)
void
removeRow(int row)
void
rowsRemoved(TableModelEvent
event)
Equivalente a fireTableChanged()
void
setColumnsIdentifiers(Object[]
newIdentifiers)
void
setColumnsIdentifiers(Vector
newIdentifiers)
void
setDataVector(Object[][] newData,
Object[] columnNames)
void
setDataVector(Vector newData,
Vector columnNames)
void
setNumRows(int newSize)
void
setRowCount(int rowCount)
void
25 de 27
http://www.javahispano.org
La API AbstractTableModel
Campos
Resumen de los Campos
Campo
Descripcin
protected EventListener
ListenerList
Constructores
Constructores
Constructor
Descripcin
AbstractTableModel()
Mtodos
Resumen de los Mtodos
Mtodo
Descripcin
void
addTableModelListener(TableM Agrega a un listener a la lista que se notifica cada vez que ocurre
odelListener l)
un cambio al modelo de los datos
int
findColumn(String
columnName)
void
fireTableCellUpdated(int row, int Notifica a todos los listeners que el valor de la celda[firstRow,
column)
lastRow], ha sido actualizado
void
void
fireTableDataChanged()
void
fireTableRowsDeleted(int
firstRow, int lastRow)
Notifica a todos los listeners que las filas dentro del rango
[firstRow, lastRow], inclusive, han sido eliminadas
void
fireTableRowsInserted(int
firstRow, int lastRow)
Notifica a todos los listeners que las filas dentro del rango
[firstRow, lastRow], inclusive, han sido insertadas
void
fireTableRowsUpdated(int
firstRow, int lastRow)
Notifica a todos los listeners que las filas dentro del rango
[firstRow, lastRow], inclusive, han sido actualizadas
void
fireTableStructuredChanged()
Class
getColumnClass (int
columnIndex)
String
getColumnName(int column)
EventListe
Devuelve un areglo con todos los listener del tipo dado en este
getListeners(Class listenerType)
ner []
modelo.
Retorna false; pero se puede sobreescribir y devolver true para
que las celdas sean editables
boolean
void
removeTableModelListener(Tabl Elimina un listener de la lista, esta se notifica cada vez que ocurre
eModelListener l)
un cambio en el modelo de datos.
26 de 27
Jtable (parte 1)
void
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.
Referencias
Swing Tutorial
Matthew Robinson & Pavel Vorobiev
Capitulo 18. JTables
http://www.manning.com/Robinson/chapter18.pdf
Tutorial de Swing en SUN
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
La Biblia de Java 2
Steven Holzner
Ed. Anaya Multimedia/Coriolis
ISBN: 84-415-1037-7
Puede descargar el codigo de los ejemplos: jtable.zip
Isaac Ruz, RuGI, egresado del ITI (Istmo de Tehuantepec, Oaxaca, Mexico) en la Carrera de Ingeniera en Sistemas
Computacionales, es actualmente desarrollador independiente Java con intenciones de realizar el examen de
certificacin
Cuando no esta programando o navegando (?) le gusta mucho leer todo aquello que le de el mas pequeo indicio
de como llegar al Valhala o por lo menos a Avalon =:D
Para cualquier duda o comentario: RuGI_ARROBA_javahispano.com
27 de 27