ola a todos !!!
estive estudando esse http://www.guj.com.br/article.show.logic?id=147 e fiz umas adaptacoeszinhas, mas o cabecalho da Tabela nao esta aparecendo…
alguem poderia ajudar o q esta errado ?
package TestTable;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
public class TestTable2 extends AbstractTableModel{
private String [] aHeader = null;
private ArrayList aCols = null;
public String[] getaHeader() {return aHeader;}
public ArrayList getaCols() {return aCols;}
public void setaHeader(String[] strings) {aHeader = strings;}
public void setaCols(ArrayList list) {aCols = list;}
private boolean [] colsEdicao;
JTable oTable;
public TestTable2() {
JFrame oFrame = new JFrame();
Dimension oScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
oFrame.setSize(oScreenSize.width,oScreenSize.height-20);
oFrame.setTitle("Teste de Table2.");
oFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
oFrame.setResizable(false);
JFrame.setDefaultLookAndFeelDecorated(true);
oFrame.getContentPane().setLayout(null);
oTable = createJTable();
/*
String[] aHeaders = new String[] { "Estado", "Cidade" }; // sem alterçao
// linha adicionada apos a criação das aHeader
boolean [] edicao = {false, true};
// Alterar chamada de criação do modelo
SimpleTableModel modelo = new SimpleTableModel(aCols, aHeaders, edicao);
// para enviar as propriedades de edicao das aHeader
*/
oTable.setBounds(100,50,500,400);
oFrame.getContentPane().add(oTable);
oFrame.setVisible(true);
}
public JTable createJTable() { // Cria a JTable
String[] colunas = new String[] { "Estado", "Cidade" };
ArrayList dados = new ArrayList();
// Alimenta as aCols de dados
dados.add( new String[] { "SP", "Santo Paulo" } ) ;
dados.add( new String[] { "RJ", "Rio de Janeiro" } ) ;
dados.add( new String[] { "RN", "Rio Grande do Norte" } ) ;
dados.add( new String[] { "ES", "Espirito Santo" } ) ;
boolean Edit [] = {false, true};
TestTable2 modelo = new TestTable2( dados, colunas, Edit );
JTable jtable = new JTable(modelo);
jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
return jtable;
}
public TestTable2(ArrayList dados, String[] aHeader, boolean [] edicao){
setaHeader(aHeader);
setaCols(dados);
colsEdicao = edicao;
}
@Override
public boolean isCellEditable(int row, int col){
return colsEdicao[col];
}
@Override
public String getColumnName(int col){ // Retorna o nome da coluna.
return getaHeader()[col];
}
public int getColumnCount() { // Retorna o numero de aHeader no modelo
return getaHeader().length;
}
public int getRowCount() { // Retorna o numero de aCols existentes no modelo
return getaCols().size();
}
public Object getValueAt(int rowIndex, int columnIndex) { // Obtem o valor na linha e coluna
String [] linha = (String [])getaCols().get(rowIndex); // Obtem a linha, que é uma String []
return linha[columnIndex]; // Retorna o objeto que esta na coluna
}
@Override
public void setValueAt(Object value, int row, int col){ // Seta o valor na linha e coluna
String [] linha = (String [])getaCols().get(row); // Obtem a linha, que é uma String []
linha[col] = (String)value; // Altera o conteudo no indice da coluna passado
fireTableCellUpdated(row,col); // dispara o evento de celula alterada
}
public void addRow( String [] dadosLinha){
getaCols().add(dadosLinha);
// Informa a jtable de que houve aCols incluidas no modelo
// COmo adicionamos no final, pegamos o tamanho total do modelo
// menos 1 para obter a linha incluida.
int linha = getaCols().size()-1;
fireTableRowsInserted(linha,linha);
return;
}
public void removeRow(int row){
getaCols().remove(0);
// informa a jtable que houve dados deletados passando a
// linha reovida
fireTableRowsDeleted(row,row);
}
public boolean removeRow(String val, int col){ // Remove a linha pelo valor da coluna informada
// obtem o iterator
Iterator i = getaCols().iterator();
int linha = 0;
// Faz um looping em cima das aCols
while(i.hasNext()){
// Obtem as aHeader da linha atual
String[] linhaCorrente = (String[])i.next();
linha++;
// compara o conteudo String da linha atual na coluna desejada
// com o valor informado
if( linhaCorrente[col].equals(val) ){
getaCols().remove(linha);
// informa a jtable que houve dados deletados passando a
// linha removida
fireTableRowsDeleted(linha,linha);
return true;
}
}
// Nao encontrou nada
return false;
}
public static void main(String args[]) {
new TestTable2();
}
}
obrigado !!!