tecgraf.javautils.gui.table
Class ColumnsObjectTableModel<T>

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by tecgraf.javautils.gui.table.ColumnsObjectTableModel<T>
Type Parameters:
T - Tipo dos objetos que serão representados por linhas da tabela.
All Implemented Interfaces:
Serializable, TableModel

public class ColumnsObjectTableModel<T>
extends AbstractTableModel

Modelo de tabela de objetos de fácil construção.
Sua arquitetura permite reutilizar o código das colunas e exime o desenvolvedor de trabalhar com os índices da tabela, seja de linha ou de coluna.

Para criar um modelo de tabela você precisa de duas coisas:

Obs. esse modelo não faz uso dos métodos IColumn.createTableCellEditor() e IColumn.createTableCellRenderer().

Antes de utilizar esse modelo dê uma olhada na classe ObjectTableBuilder que facilita a construção de tabelas cujas informações mostradas estão contidas em um objeto.

Author:
Tecgraf
See Also:
ColumnsObjectTableModelSample, Serialized Form

Field Summary
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
ColumnsObjectTableModel(List<T> rows, IColumn<T>... columns)
          Cria o modelo.
 
Method Summary
 void add(T row)
          Adiciona um objeto-linha à lista.
 void addAll(Collection<T> rows)
          Adiciona uma coleção de objetos-linha à lista.
 void clear()
          Remove todos os elementos de objetos.
 Class<?> getColumnClass(int columnIndex)
          
 int getColumnCount()
          
 String getColumnName(int columnIndex)
          
 IColumn<T>[] getColumns()
          Obtém os modelos das colunas da tabela na ordem em que elas aparecem.
Obs.
 T getRow(int rowIndex)
          Obtém um objeto-linha específico.
 int getRowCount()
          
 List<T> getRows()
          Obtém a lista de objetos-linha atualizada.
 Object getValueAt(int rowIndex, int columnIndex)
          
 boolean isCellEditable(int rowIndex, int columnIndex)
          
 boolean modify(T row)
          Modifica os dados de um objeto-linha da lista.
 T remove(int rowIndex)
          Remove um objeto-linha da lista pelo seu índice do modelo.
 boolean remove(T row)
          Remove um objeto-linha da lista.
 Collection<T> removeAll()
          Remove todos os objetos-linha.
 Collection<T> removeAll(int[] rowIndexes)
          Remove os objetos-linha especificados pelos seus índices.
 void setRows(List<T> newRows)
          Substitui a lista de objetos-linha.
 void setValueAt(Object newValue, int rowIndex, int columnIndex)
          
 void swapRows(int index1, int index2)
          Troca duas linhas no modelo.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ColumnsObjectTableModel

public ColumnsObjectTableModel(List<T> rows,
                               IColumn<T>... columns)
Cria o modelo.

Parameters:
rows - lista de objetos-linha.
columns - Modelo das colunas da tabela na ordem em que devem aparecer.
Throws:
IllegalArgumentException - se a lista de linhas ou o provedor forem iguais a null, ou se a lista de nomes das colunas retornada pelo provedor for null
Method Detail

getColumns

public IColumn<T>[] getColumns()
Obtém os modelos das colunas da tabela na ordem em que elas aparecem.
Obs. mudanças nesse array e/ou nas colunas poderam danificar o funcionamento da tabela.

Returns:
os modelos das colunas da tabela na ordem em que elas aparecem.

getRowCount

public int getRowCount()


getColumnCount

public int getColumnCount()


getValueAt

public Object getValueAt(int rowIndex,
                         int columnIndex)


setValueAt

public void setValueAt(Object newValue,
                       int rowIndex,
                       int columnIndex)

Specified by:
setValueAt in interface TableModel
Overrides:
setValueAt in class AbstractTableModel

isCellEditable

public boolean isCellEditable(int rowIndex,
                              int columnIndex)

Specified by:
isCellEditable in interface TableModel
Overrides:
isCellEditable in class AbstractTableModel

getColumnName

public String getColumnName(int columnIndex)

Specified by:
getColumnName in interface TableModel
Overrides:
getColumnName in class AbstractTableModel

getColumnClass

public Class<?> getColumnClass(int columnIndex)

Specified by:
getColumnClass in interface TableModel
Overrides:
getColumnClass in class AbstractTableModel

clear

public void clear()
Remove todos os elementos de objetos.


setRows

public void setRows(List<T> newRows)
Substitui a lista de objetos-linha.

Parameters:
newRows - nova lista de objetos-linha.
Throws:
IllegalArgumentException - se a lista de novas linhas for null

add

public void add(T row)
Adiciona um objeto-linha à lista. Se já existir um objeto com o mesmo identificador, este é sobrescrito (não permite duplicatas).

Parameters:
row - objeto-linha a ser adicionado.
Throws:
IllegalArgumentException - se row for nulo.

addAll

public void addAll(Collection<T> rows)
Adiciona uma coleção de objetos-linha à lista. Se já existir um objeto com o mesmo identificador, este é sobrescrito (não permite duplicatas).

Parameters:
rows - coleção de objetos-linha a serem adicionados.
Throws:
IllegalArgumentException - se rows for nulo.

remove

public boolean remove(T row)
Remove um objeto-linha da lista.

Parameters:
row - objeto-linha a ser removido.
Returns:
true se o objeto-linha for encontrado e removido com sucesso, false caso contrário.
Throws:
IllegalArgumentException - se row for nulo.

remove

public T remove(int rowIndex)
Remove um objeto-linha da lista pelo seu índice do modelo.

Parameters:
rowIndex - índice do objeto-linha a ser removido.
Returns:
o objeto-linha removido.
Throws:
IndexOutOfBoundsException - se o índice for negativo ou se for maior do que o tamanho da lista de objeto-linha.

removeAll

public Collection<T> removeAll(int[] rowIndexes)
Remove os objetos-linha especificados pelos seus índices.

Parameters:
rowIndexes - índices dos objetos-linha a serem removidos.
Returns:
coleção de objetos removidos.
Throws:
IllegalArgumentException - se rowIndexes for nulo.
IndexOutOfBoundsException - se algum índice for negativo ou se for maior do que o tamanho da lista de objeto-linha.
See Also:
AbstractTableModel.fireTableRowsDeleted(int, int)

removeAll

public Collection<T> removeAll()
Remove todos os objetos-linha.

Returns:
coleção de objetos removidos.

modify

public boolean modify(T row)
Modifica os dados de um objeto-linha da lista.

Parameters:
row - objeto-linha a ser modificado.
Returns:
true caso o objeto tenha sido modificado com sucesso, false caso este não tenha sido encontrado.
Throws:
IllegalArgumentException - se a linha for null

getRows

public List<T> getRows()
Obtém a lista de objetos-linha atualizada.

Returns:
lista de objetos-linha.

getRow

public T getRow(int rowIndex)
Obtém um objeto-linha específico.

Parameters:
rowIndex - índice do objeto-linha
Returns:
o objeto-linha solicitado, ou null
Throws:
IndexOutOfBoundsException - se o índice for inválido

swapRows

public void swapRows(int index1,
                     int index2)
Troca duas linhas no modelo.

Parameters:
index1 - - índice da primeira linha
index2 - - índice da segunda linha


Copyright © 2014 Tecgraf/PUC-Rio. All rights reserved.