Boa Tarde Pessoal!!
Para não cria mais um tópico sobre isso resolvi editar um topico meu que eu perguntava sobre JTable, li em Artigos/Tutoriais do GUJ mostrando como que se cria um MyTableModel, entaum resolve fazer um para meu caso pelo motivo de ter chegado na parte de alteração dos campos da tabela e com Default fica muito ruim de se mecher com isso… No tutorial do GUJ mostra ele inserindo dados manualmente, no meu caso eu pego de uma tabela do BD, gostaria de saber se o jeito que eu fiz esta correto…
Segue o código:
Essa é a classe do MyTableModel que eu fiz aqui…
MyTableModel
package PacClasses
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;
public class MyTableModel extends AbstractTableModel
{
private ArrayList linhas = null;
private String[] colunas = null;
private boolean[] colsEdicao;
public MyTableModel(ArrayList dados, String[] colunas)
{
setLinhas(dados);
setColunas(colunas);
//colsEdicao = edicao;
}
public String getColumnName(int col)
{
return getColunas()[col];
}
public String[] getColunas()
{
return colunas;
}
public ArrayList getLinhas()
{
return linhas;
}
public void setColunas(String[] strings)
{
colunas = strings;
}
public void setLinhas(ArrayList list)
{
linhas = list;
}
public boolean isCellEditable(int row, int col)
{
return colsEdicao[col];
}
public int getColumnCount()
{
return getColunas().lenght;
}
public int getRowCount()
{
return getLinhas().size();
}
public Object getValueAt(int rowIndex, int columnIndex)
{
String[] linha = (String[]) getLinhas().get(rowIndex);
return linha[columnIndex];
}
public void setValueAt(Object value, int row, int col)
{
String[] linha = (String[]) getLinhas().get(row);
linha[col] = (String)value;
fireTableCellUpdated(row, col);
}
public void addRow(String[] dadosLinhas)
{
getLinhas().add(dadosLinhas);
int linha = getLinhas().size()-1;
fireTableRowsInserted(linha, linha);
return;
}
public void removeRow(int row)
{
getLinhas().remove(0);
fireTableRowsDeleted(row, row);
}
public boolean removeRow(String val, int col)
{
Iterator i = getLinhas().iterator();
int linha = 0;
while(i.hasNext())
{
String[] linhaCorrente = (String[]) i.next();
linha++;
if(linhaCorrente[col].equals(val))
{
getLinhas().remove(linha);
fireTableRowsDeleted(linha, linha);
return true;
}
}
return false;
}
}
Essa é a classe Cadastro de Funcionarios…
CadFuncECS
package PacPrincipal
import PacConexao.Conexao;
import PacClasses.FuncionarioECS;
import PacClasses.MyTableModel;
import java.sql.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CadFuncECS extends javax.swing.JPanel
{
private Conexao con;
private Statement stm;
private ResultSet rs;
public CadFuncECS(Conexao con)
{
this.con = con;
initComponents();
inserirDados(getDados());
}
public ResultSet getDados()
{
try
{
stm = con.getStatement();
rs = stm.executeQuery("select * from funcionariosecs"); //A tabela possui somente uma coluna
}
catch(SQLException e)
{
e.printStackTrace();
}
return rs;
}
public void inserirDados(ResultSet rs)
{
try
{
ResultSetMetaData metaData = rs1.getMetaData();
String[] colunas = new String[metaData.getColumCount()];
ArrayList linhas = new ArrayList();
for(int i = 0; i < colunas.lenght; i++)
{
colunas[i] = metaData.getColumnName(i+1);
}
while(rs1.next())
{
ArrayList linha = new ArrayList();
for(int i = 1; i < colunas.lenght; i++)
{
linha.add(rs1.getString(i));
}
linhas = linha;
}
MyTableModel modelo = new MyTableModel(linhas, colunas);
tbFuncECS.setModel(modelo);
}
catch(SQLException e)
{
System.out.println(e);
}
}
}
Fiquei meio extenso :oops:, mas achei melhor colocar as duas classes que estou usando para facilitar melhor a compeensao, gostaria de saber se o pessoal pudesse me dizer o que eu estaria fazendo de erro nessas duas classe… quando eu chamo a tela de Cadastro de Funcionários ele monta a tabela somente com a coluna e sem as linhas, o porque disso eu ainda nao entendi…
Fico no aguardo de alguma dica, e continuando a quebra a cabeça aqui!!!
Desde ja Agradeço a compreensão de Todos!!!