Rafael, só mais outra dúvida:
Eu tenho a minha classe Principal, e dentro dela tem a minha classe SimpleTableModel que pr si tem o construtor SimpleTableModel dentro dela, porém quando na classe Principal eu coloco como vc me falou:
SimpleTableModel mytable = new SimpleTableModel();
dá um erro de construtor indefinido, mas tá tudo correto, não consigo entender o porque deste erro!
Olha o código do SimpleTableModel, peguei aqui do artigo do GUJ, veja se ajuda:
public class SimpleTableModel extends AbstractTableModel{
private ArrayList linhas = null;
private String [] colunas = null;
public String[] getColunas() {return colunas;}
public ArrayList getLinhas() {return linhas;}
public void setColunas(String[] strings) {colunas = strings;}
public void setLinhas(ArrayList list) {linhas = list;}
//SimpleTableModel mytable = new SimpleTableModel();
/**
* Retorna o numero de colunas no modelo
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount() {return getColunas().length;}
/**
* Retorna o numero de linhas existentes no modelo
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount() {return getLinhas().size();}
/**
* Obtem o valor na linha e coluna
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int rowIndex, int columnIndex) {
// Obtem a linha, que é uma String []
String [] linha = (String [])getLinhas().get(rowIndex);
// Retorna o objeto que esta na coluna
return linha[columnIndex];
}
public SimpleTableModel(ArrayList dados, String[] colunas){
setLinhas(dados);
setColunas(colunas);
}
/**
* Cria a JTable
* @return
*/
public JTable createJTable() {
ArrayList dados = new ArrayList();
String[] colunas = new String[] { "Estado", "Cidade" };
// Alimenta as linhas de dados
dados.add(new String[] { "SP", "São 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" });
SimpleTableModel modelo = new SimpleTableModel(dados, colunas);
JTable JTProdutos = new JTable(modelo);
JTProdutos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
return JTProdutos;
}
/**
* Seta o valor na linha e coluna
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object value, int row, int col){
// Obtem a linha, que é uma String []
String [] linha = (String [])getLinhas().get(row);
// Altera o conteudo no indice da coluna passado
linha[col] = (String)value;
// dispara o evento de celula alterada
fireTableCellUpdated(row,col);
}
public void addRow( String [] dadosLinha){
getLinhas().add(dadosLinha);
// Informa a jtable de que houve linhas incluidas no modelo
// COmo adicionamos no final, pegamos o tamanho total do modelo
// menos 1 para obter a linha incluida.
int linha = getLinhas().size()-1;
fireTableRowsInserted(linha,linha);
return;
}
public void removeRow(int row){
getLinhas().remove(0);
// informa a jtable que houve dados deletados passando a
// linha reovida
fireTableRowsDeleted(row,row);
}
/**
* Remove a linha pelo valor da coluna informada
* @param val
* @param col
* @return
*/
public boolean removeRow(String val, int col){
// obtem o iterator
Iterator i = getLinhas().iterator();
int linha = 0;
// Faz um looping em cima das linhas
while(i.hasNext()){
// Obtem as colunas 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) ){
getLinhas().remove(linha);
// informa a jtable que houve dados deletados passando a
// linha removida
fireTableRowsDeleted(linha,linha);
return true;
}
}
// Nao encontrou nada
return false;
}
}
Mesmo assim valeu pela ajuda! 8)