Após horas pesquisando sobre TableModel e tentando fazer, não obtive muito sucesso…
O problema é que eu não sei se o que eu já fiz está certo e como colocar os dados na jTable…
Segue as classes:
public class horario {
private String nome;
private String data;
private String horario;
private String procedimento;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getHorario() {
return horario;
}
public void setHorario(String horario) {
this.horario = horario;
}
public String getProcedimento() {
return procedimento;
}
public void setProcedimento(String Procedimento) {
this.procedimento = procedimento;
}
}
TableModel:
[code]
public class Model extends AbstractTableModel {
private static final long serialVersionUID = 1L;
/* Lista de Cliente que representam as linhas. */
private List<horario> linhas;
/* Array de Strings com o nome das colunas. */
private String[] colunas = new String[]{
"Nome","Data","Horário","Procedimento"};
/* Cria um ClienteTableModel vazio. */
public Model() {
linhas = new ArrayList<horario>();
}
/* Cria um ClienteTableModel carregado com
* a lista de Cliente especificada. */
public Model(List<horario> listaDeHorario) {
linhas = new ArrayList<horario>(listaDeHorario);
}
/* Retorna a quantidade de colunas. */
@Override
public int getColumnCount() {
// Está retornando o tamanho do array "colunas".
return colunas.length;
}
/* Retorna a quantidade de linhas. */
@Override
public int getRowCount() {
// Retorna o tamanho da lista de Cliente.
return linhas.size();
}
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
return colunas[columnIndex];
}
;
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
;
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
horario horario = linhas.get(rowIndex);
// Retorna o campo referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o campo adequado. As colunas sãoas mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
// Seguindo o exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};
case 0:
return horario.getNome();
case 1:
return horario.getData();
case 2:
return horario.getHorario();
case 3:
return horario.getProcedimento();
default:
// Isto não deveria acontecer...
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
//modifica na linha e coluna especificada
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
horario horario = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
switch (columnIndex) { // Seta o valor do campo respectivo
case 0:
horario.setNome(aValue.toString());
case 1:
horario.setData(aValue.toString());
case 2:
horario.setHorario(aValue.toString());
case 3:
horario.setProcedimento(aValue.toString());
default:
// Isto não deveria acontecer...
}
fireTableCellUpdated(rowIndex, columnIndex);
}
//modifica na linha especificada
public void setValueAt(horario aValue, int rowIndex) {
horario horario = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
horario.setNome(aValue.getNome());
horario.setData(aValue.getData());
horario.setHorario(aValue.getHorario());
horario.setProcedimento(aValue.getProcedimento());
fireTableCellUpdated(rowIndex, 0);
fireTableCellUpdated(rowIndex, 1);
fireTableCellUpdated(rowIndex, 2);
fireTableCellUpdated(rowIndex, 3);
}
;
;
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public horario getHorario(int indiceLinha) {
return linhas.get(indiceLinha);
}
/* Adiciona um registro. */
public void addHorario(horario m) {
// Adiciona o registro.
linhas.add(m);
int ultimoIndice = getRowCount() - 1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
/* Remove a linha especificada. */
public void removeHorario(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
/* Adiciona uma lista de Cliente ao final dos registros. */
public void addListaDeHorario(List<horario> horario) {
// Pega o tamanho antigo da tabela.
int tamanhoAntigo = getRowCount();
// Adiciona os registros.
linhas.addAll(horario);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
/* Remove todos os registros. */
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
/* Verifica se este table model esta vazio. */
public boolean isEmpty() {
return linhas.isEmpty();
} }[/code]
A partir daqui que me perdi…:
public void pesquisa(String qry) throws SQLException{
conexao();
List<horario> h = new ArrayList<>();
boolean status = conecta.conecta();
boolean cons = conecta.consulta(qry);
ResultSet dados = conecta.getConsulta();
while(dados.next()){
horario hora = new horario();
hora.setNome(dados.getString("nome_horario"));
hora.setData(dados.getString("data_horario"));
hora.setHorario(dados.getString("horario_horario"));
hora.setProcedimento(dados.getString("procedimento_horario"));
h.add(hora);
}
}
uso assim para poder chamar em algum evento, ex: pesquisa(“select * from tbhorario”);
Classe que contém a tabela:
public class testeTCC extends javax.swing.JFrame {
Model modelo;
Conexao conecta = new Conexao();
CarregaTodos carrega = new CarregaTodos();
//modelo criado
private void setModelo(){
modelo = new Model();
jt_teste.setModel(modelo);
}
public testeTCC() throws SQLException {
initComponents();
conecta.setDRIVE("org.gjt.mm.mysql.Driver");
conecta.setURL("jdbc:mysql://");
conecta.setHOST("localhost");
conecta.setBANCO("odonto");
conecta.setUSUARIO("root");
conecta.setSENHA("02496846088");
setModelo();
carrega.pesquisa("select * from tbhorario;");
}
