JTable não atualiza as informações no momento que alguém faz uma pesquisa na JTextField

14 respostas Resolvido
F

Saudações Gujianas.

Estou com o seguinte problema. Eu tenho um API onde tem uma um JTextField de pesquisa. Ou seja, no momento que alguém digita alguma informação a minha JTable vai filtrar estas informações para trazer a informação desejada. Fiz um teste com meu Sysout e as informações estão sendo passadas. Segue código e uma print.

package br.com.FrontEnd;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.text.ParseException;

import java.util.ArrayList;

import java.util.List;
import javax.swing.JButton;

import javax.swing.JFormattedTextField;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.text.MaskFormatter;
import br.com.BackEnd.ClasseIncluirCliente;

import br.com.BackEnd.ClasseJTable;

import br.com.BackEnd.PersisitirDadosBanco;

public class ClasseButton extends ClasseTela {

static JButton jbIncluir;
static JButton jbEditar;
static JButton jbExcluir;
static JButton jbSalvar;

static JTextField jtfNomeEmpresaEdit;
static JTextField jtfAnyDeskEdit;
static JTextField jtfTeamViewerEdit;
static JTextArea jtfObservacaoEdit;
static JTextField jtfTelefoneEdit;
static JTextField jtfCelularEdit;

static JTextField jtfNomeEmpresa;
static JTextField jtfAnyDesk;
static JTextField jtfTeamViewer;
static JTextField jtfPesquisa;
static JTextArea jtfObservacao;
static JLabel contCodigo;
static JLabel jlPrincipal;
static JLabel contID;
static JFormattedTextField jtfTelefone;
static JFormattedTextField jtfCelular;
static JTable table;

public void Botao() {

	jbIncluir = new JButton("Incluir");
	jbIncluir.setBounds(30, 260, 500, 20);
	jbIncluir.setBackground(new java.awt.Color(55, 100, 79));
	jbIncluir.setVisible(true);
	jpanelPrincipal.add(jbIncluir);

	jbExcluir = new JButton("Excluir");
	jbExcluir.setBounds(175, 700, 65, 20);
	jbExcluir.setBackground(new java.awt.Color(205, 0, 0));
	jbExcluir.setVisible(true);
	jpanelPrincipal.add(jbExcluir);

}

public void BotaoSalvar() {

	jbSalvar = new JButton("Salvar");
	jbSalvar.setBounds(30, 520, 100, 20);
	jbSalvar.setBackground(new java.awt.Color(135, 206, 235));
	jbSalvar.setVisible(true);
	jpTabela.add(jbSalvar);

}

public void CampoEmpresa() {

	JLabel nomeEmpresa = new JLabel("Nome da Empresa *");
	nomeEmpresa.setBounds(30, -10, 150, 70);
	nomeEmpresa.setForeground(Color.WHITE);
	nomeEmpresa.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(nomeEmpresa);
	nomeEmpresa.setVisible(true);

	jtfNomeEmpresa = new JTextField();
	jtfNomeEmpresa.setBounds(30, 40, 500, 27);
	jtfNomeEmpresa.setBackground(new java.awt.Color(205, 183, 181));
	jtfNomeEmpresa.setVisible(true);
	jpanelPrincipal.add(jtfNomeEmpresa);

	JLabel anyDesk = new JLabel("AnyDesk *");
	anyDesk.setBounds(30, 50, 150, 70);
	anyDesk.setForeground(Color.WHITE);
	anyDesk.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(anyDesk);
	anyDesk.setVisible(true);

	jtfAnyDesk = new JTextField();
	jtfAnyDesk.setBounds(30, 100, 500, 25);
	jtfAnyDesk.setBackground(new java.awt.Color(205, 183, 181));
	jtfAnyDesk.setVisible(true);
	jpanelPrincipal.add(jtfAnyDesk);

	JLabel teamViewer = new JLabel("TeamViewer");
	teamViewer.setBounds(30, 110, 150, 70);
	teamViewer.setForeground(Color.WHITE);
	teamViewer.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	teamViewer.setVisible(true);
	jpanelPrincipal.add(teamViewer);

	jtfTeamViewer = new JTextField();
	jtfTeamViewer.setBounds(30, 160, 500, 25);
	jtfTeamViewer.setBackground(new java.awt.Color(205, 183, 181));
	jtfTeamViewer.setVisible(true);
	jpanelPrincipal.add(jtfTeamViewer);

	JLabel observacao = new JLabel("Observação");
	observacao.setBounds(550, 12, 100, 25);
	observacao.setForeground(Color.WHITE);
	observacao.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(observacao);
	observacao.setVisible(true);

	jtfObservacao = new JTextArea();
	jtfObservacao.setBackground(new java.awt.Color(205, 183, 181));
	jtfObservacao.setFont(new Font("Arial", Font.PLAIN, 15));

	JScrollPane scroll = new JScrollPane(jtfObservacao);
	// scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	scroll.setBounds(550, 40, 460, 235);
	scroll.setBackground(new java.awt.Color(55, 79, 79));
	jpanelPrincipal.add(scroll);
	scroll.setVisible(true);

	JLabel jlTelefone = new JLabel("Telefone");
	jlTelefone.setBounds(30, 170, 150, 70);
	jlTelefone.setForeground(Color.WHITE);
	jlTelefone.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(jlTelefone);
	jlTelefone.setVisible(true);

	MaskFormatter telefone = new MaskFormatter();
	try {
		telefone = new MaskFormatter("(##)####-####");
		telefone.setPlaceholderCharacter('_');
	} catch (ParseException excp) {
		System.err.println(excp.getMessage());

	}

	jtfTelefone = new JFormattedTextField(telefone);
	jtfTelefone.setBounds(30, 220, 100, 25);
	jtfTelefone.setBackground(new java.awt.Color(205, 183, 181));
	jtfTelefone.setVisible(true);
	jpanelPrincipal.add(jtfTelefone);

	JLabel jlCelular = new JLabel("Celular");
	jlCelular.setBounds(150, 170, 150, 70);
	jlCelular.setForeground(Color.WHITE);
	jlCelular.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(jlCelular);
	jlCelular.setVisible(true);

	MaskFormatter celular = new MaskFormatter();
	try {
		celular = new MaskFormatter("(##)#####-####");
		celular.setPlaceholderCharacter('_');
	} catch (ParseException excp) {
		System.err.println(excp.getMessage());

	}

	jtfCelular = new JFormattedTextField(celular);
	jtfCelular.setBounds(150, 220, 110, 25);
	jtfCelular.setBackground(new java.awt.Color(205, 183, 181));
	jtfCelular.setVisible(true);
	jpanelPrincipal.add(jtfCelular);

	JLabel pesquisa = new JLabel("Pesquisar");
	pesquisa.setBounds(292, 195, 100, 25);
	pesquisa.setForeground(Color.WHITE);
	pesquisa.setBackground(new java.awt.Color(0, 0, 0));
	pesquisa.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 15));
	jpanelPrincipal.add(pesquisa);
	pesquisa.setVisible(true);

	jtfPesquisa = new JTextField();
	jtfPesquisa.setBounds(290, 220, 240, 25);
	jtfPesquisa.setBackground(new java.awt.Color(205, 183, 181));
	jtfPesquisa.setVisible(true);
	jpanelPrincipal.add(jtfPesquisa);

	Pesquisa(PersisitirDadosBanco.ConsultaDB(""));

	ExecutarBotoes();
	Excluir();

}

public static void PanelEditavel(ClasseIncluirCliente selecionarLinha) {

	contCodigo = new JLabel();
	contCodigo.setText(selecionarLinha.getCodigo());
	contCodigo.setBounds(440, 12, 100, 25);
	contCodigo.setForeground(new java.awt.Color(255, 0, 0));
	contCodigo.setFont(new Font("Arial", Font.BOLD, 15));
	jpTabela.add(contCodigo);
	contCodigo.setVisible(true);

	jtfNomeEmpresaEdit = new JTextField();
	jtfNomeEmpresaEdit.setBounds(30, 40, 500, 25);
	jtfNomeEmpresaEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfNomeEmpresaEdit.setVisible(true);
	jtfNomeEmpresaEdit.setText(selecionarLinha.getNomeEmpresa());
	jpTabela.add(jtfNomeEmpresaEdit);

	jtfAnyDeskEdit = new JTextField();
	jtfAnyDeskEdit.setBounds(30, 100, 500, 25);
	jtfAnyDeskEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfAnyDeskEdit.setVisible(true);
	jtfAnyDeskEdit.setText(selecionarLinha.getAnyDesk());
	jpTabela.add(jtfAnyDeskEdit);

	jtfTeamViewerEdit = new JTextField();
	jtfTeamViewerEdit.setBounds(30, 160, 500, 25);
	jtfTeamViewerEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfTeamViewerEdit.setVisible(true);
	jtfTeamViewerEdit.setText(selecionarLinha.getTeamViewer());
	jpTabela.add(jtfTeamViewerEdit);

	jtfObservacaoEdit = new JTextArea();
	jtfObservacaoEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfObservacaoEdit.setFont(new Font("Arial", Font.PLAIN, 15));
	jtfObservacaoEdit.setText(selecionarLinha.getObservacao());

	JScrollPane scroll = new JScrollPane(jtfObservacaoEdit);
	// scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	scroll.setBounds(30, 300, 500, 220);
	scroll.setBackground(new java.awt.Color(55, 79, 79));
	jpTabela.add(scroll);
	scroll.setVisible(true);

	MaskFormatter telefone = new MaskFormatter();
	try {
		telefone = new MaskFormatter("(##)####-####");
		telefone.setPlaceholderCharacter('_');
	} catch (ParseException excp) {
		System.err.println(excp.getMessage());

	}

	jtfTelefoneEdit = new JFormattedTextField(telefone);
	jtfTelefoneEdit.setBounds(30, 220, 100, 25);
	jtfTelefoneEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfTelefoneEdit.setVisible(true);
	jtfTelefoneEdit.setText(selecionarLinha.getTelefone());
	jpTabela.add(jtfTelefoneEdit);

	MaskFormatter celular = new MaskFormatter();
	try {
		celular = new MaskFormatter("(##)#####-####");
		celular.setPlaceholderCharacter('_');
	} catch (ParseException excp) {
		System.err.println(excp.getMessage());

	}

	jtfCelularEdit = new JFormattedTextField(celular);
	jtfCelularEdit.setBounds(150, 220, 110, 25);
	jtfCelularEdit.setBackground(new java.awt.Color(205, 183, 181));
	jtfCelularEdit.setVisible(true);
	jtfCelularEdit.setText(selecionarLinha.getCelular());
	jpTabela.add(jtfCelularEdit);

}

public void ExecutarBotoes() {

	jbIncluir.addActionListener(new ActionListener() {

		ClasseIncluirCliente cliente = new ClasseIncluirCliente();
		PersisitirDadosBanco persisti = new PersisitirDadosBanco();

		@Override
		public void actionPerformed(ActionEvent e) {

			if (jtfNomeEmpresa.getText().isEmpty() || jtfAnyDesk.getText().isEmpty()) {

				JOptionPane.showMessageDialog(null,
						"Ops,você não inseriru dados da Empresa e do AnyDesk! \nPor favor Verifique!", "Aviso",
						JOptionPane.WARNING_MESSAGE);

			} else {

				cliente.setNomeEmpresa(jtfNomeEmpresa.getText());
				cliente.setAnyDesk(jtfAnyDesk.getText());
				cliente.setTeamViewer(jtfTeamViewer.getText());
				cliente.setTelefone(jtfTelefone.getText());
				cliente.setCelular(jtfCelular.getText());
				cliente.setObservacao(jtfObservacao.getText());

				jtfNomeEmpresa.setText("");
				jtfAnyDesk.setText("");
				jtfTeamViewer.setText("");
				jtfTelefone.setText("");
				jtfCelular.setText("");
				jtfObservacao.setText("");

				persisti.IncluirDB(cliente);

				List<ClasseIncluirCliente> buscarTable = PersisitirDadosBanco.ConsultaDB("");

				ClasseJTable modelo = new ClasseJTable(buscarTable);
				table.setModel(modelo);

			}
		}
	});

}

public void Pesquisa(List<ClasseIncluirCliente> buscar) {

	jtfPesquisa.addKeyListener(new KeyListener() {

		@Override
		public void keyTyped(KeyEvent e) {

			List<ClasseIncluirCliente> buscarDados = new ArrayList<>();

			String consulta = jtfPesquisa.getText();

			for (ClasseIncluirCliente cliente : buscar) {

				if (cliente.getCodigo().contains(consulta) || cliente.getNomeEmpresa().contains(consulta)
						|| cliente.getAnyDesk().contains(consulta) || cliente.getTeamViewer().contains(consulta)
						|| cliente.getTelefone().contains(consulta) || cliente.getCelular().contains(consulta)) {

					buscarDados.add(cliente);

					System.out.println(consulta);

				}

			}

			List<ClasseIncluirCliente> atualizaTabela = PersisitirDadosBanco.ConsultaDB("");

			ClasseJTable atualiza = new ClasseJTable(atualizaTabela);
			table.setModel(atualiza);

		}

		@Override
		public void keyReleased(KeyEvent e) {

		}

		@Override
		public void keyPressed(KeyEvent e) {

		}
	});

}

public void Table() {

	List<ClasseIncluirCliente> buscarTable = PersisitirDadosBanco.ConsultaDB("");

	ClasseJTable modelo = new ClasseJTable(buscarTable);

	table = new JTable();
	table.setModel(modelo);

	JScrollPane scrollPanel = new JScrollPane(table);
	scrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	scrollPanel.setBounds(20, 300, 1000, 400);
	scrollPanel.setBackground(new java.awt.Color(55, 79, 79));
	scrollPanel.setViewportView(table);
	jpanelPrincipal.add(scrollPanel);
	scrollPanel.setVisible(true);

	table.addMouseListener(new MouseListener() {

		@Override
		public void mouseReleased(MouseEvent e) {

		}

		@Override
		public void mousePressed(MouseEvent e) {

		}

		@Override
		public void mouseExited(MouseEvent e) {

		}

		@Override
		public void mouseEntered(MouseEvent e) {

		}

		@SuppressWarnings("static-access")
		@Override
		public void mouseClicked(MouseEvent e) {

			if (e.getClickCount() == 2) {

				int linha = table.getSelectedRow();

				if (table.getSelectedRow() >= 0) {

					int selecionarLinha = Integer.parseInt((String) table.getValueAt(linha, 0));

					ClasseIncluirCliente cliente = PersisitirDadosBanco.SelecionarID(selecionarLinha);

					cliente.getCodigo();

					ClasseLabel telaEditavel = new ClasseLabel();
					telaEditavel.TelaTable();
					telaEditavel.JTableEdit();

					ClasseButton editarTela = new ClasseButton();
					editarTela.PanelEditavel(cliente);
					editarTela.BotaoSalvar();
					editarTela.BotaoSalvarAction(cliente);

					jframePrincipal.dispose();

				}
			} else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {

				JMenuBar menuCopiar = new JMenuBar();
				menuCopiar.setBounds(0, 0, 80, 80);
				table.add(menuCopiar);
				menuCopiar.setVisible(true);

				JMenu copiar = new JMenu("Copiar");
				copiar.setBounds(0, 0, 80, 80);
				copiar.add(menuCopiar);
				copiar.setVisible(true);

			}

		}
	});

}

public void BotaoSalvarAction(ClasseIncluirCliente cliente) {

	ClasseIncluirCliente update = new ClasseIncluirCliente();
	PersisitirDadosBanco salvarUpdate = new PersisitirDadosBanco();

	jbSalvar.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			if (jtfNomeEmpresaEdit.getText().isEmpty() || jtfAnyDeskEdit.getText().isEmpty()) {

				JOptionPane.showMessageDialog(null,
						"Ops,você não inseriru dados da Empresa e do AnyDesk! \nPor favor Verifique!", "Aviso",
						JOptionPane.WARNING_MESSAGE);

			} else {

				jfTelaEditar.dispose();
				TelaPrincipal();

				update.setCodigo(cliente.getCodigo());
				update.setNomeEmpresa(jtfNomeEmpresaEdit.getText());
				update.setAnyDesk(jtfAnyDeskEdit.getText());
				update.setTeamViewer(jtfTeamViewerEdit.getText());
				update.setTelefone(jtfTelefoneEdit.getText());
				update.setCelular(jtfCelularEdit.getText());
				update.setObservacao(jtfObservacaoEdit.getText());

				jtfNomeEmpresaEdit.setText("");
				jtfAnyDeskEdit.setText("");
				jtfTeamViewerEdit.setText("");
				jtfTelefoneEdit.setText("");
				jtfCelularEdit.setText("");
				jtfObservacaoEdit.setText("");

				salvarUpdate.SalvarDB(update);

				List<ClasseIncluirCliente> atualizaTable = PersisitirDadosBanco.ConsultaDB("");

				ClasseJTable atualizaModelo = new ClasseJTable(atualizaTable);
				table.setModel(atualizaModelo);

			}

		}
	});

}

public void Excluir() {

	jbExcluir.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {

			int linha = table.getSelectedRow();

			if (table.getSelectedRow() >= 0) {

				if (JOptionPane.showConfirmDialog(null, "Tem certeza que deseja fazer a exclusão?", "Aviso",
						JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_NO_OPTION) {

					int selecionarLinha = Integer.parseInt((String) table.getValueAt(linha, 0));

					ClasseIncluirCliente cliente = PersisitirDadosBanco.SelecionarID(selecionarLinha);

					PersisitirDadosBanco excluirLinhaDB = new PersisitirDadosBanco();
					excluirLinhaDB.ExcluirDB(cliente);

					List<ClasseIncluirCliente> atualizaTable = PersisitirDadosBanco.ConsultaDB("");

					ClasseJTable atualizaModelo = new ClasseJTable(atualizaTable);
					table.setModel(atualizaModelo);

					JOptionPane.showMessageDialog(null, "Registro excluído com sucesso!", "Aviso",
							JOptionPane.INFORMATION_MESSAGE);

				}
			} else if (jbExcluir.isEnabled()) {

				JOptionPane.showMessageDialog(null,
						"Ops! Você não selecionou nenhum registro. \nPor favor, verifique!", "Aviso",
						JOptionPane.WARNING_MESSAGE);
			}
		}
	});

}

}

Agora o teste com o sysout que eu fiz.

Como podem ver, a JTable não esta sendo atualizada em tempo real. Desde já agradeço a força.

14 Respostas

darlan_machado

Qual é o método que atualiza e dispara o fire event correspondente da JTable?

F

Não usei FireEvent. Na verdade eu nem sabia da existência dele. Como que funciona?

darlan_machado

A JTable é uma estrutura fixa, digamos, imutável. O que torna ela dinâmica são os tablemodels. Eu não sei se você está usando DefaultTableModel um um table model customizado. Considerando que seja um customizado, a partir do momento que você insere ou exclui ou troca dados do table model, deve invocar a “queima” da tabela, indicando que precisa atualizar o que é mostrado.
Exemplo:

```
public void add(Employee item) {
        items.add(item);
        int row = items.indexOf(item);
        fireTableRowsInserted(row, row); //Áqui você atualiza a JTable
    }
```

Cada ação possui um evento específico para atualizar a tabela, mas, o fireTableDataChanged() deve resolver o problema. Só não me recordo se ele recebe parâmetros

F

Boa. Vou estudar este FireEvento. Muito obrigado.

F

Esqueci de dizer estou usando AbstractTableModel. Segue código.

package br.com.BackEnd;

import java.util.ArrayList;

import java.util.List;

import javax.swing.table.AbstractTableModel;

public class ClasseJTable extends AbstractTableModel {

private static final long serialVersionUID = -2907913129227694965L;

private List<ClasseIncluirCliente> clientes = new ArrayList<ClasseIncluirCliente>();


private static final int CODIGO = 0;
private static final int NOMEEMPRESA = 1;
private static final int ANYDESK = 2;
private static final int TEAMVIEWER = 3;
private static final int TELEFONE = 4;
private static final int CELULAR = 5;

public ClasseJTable(List<ClasseIncluirCliente> clientes) {
	this.clientes = clientes;
}


@Override
public int getColumnCount() {

	return 6;
}


@Override
public int getRowCount() {

	return clientes.size();
}


@Override
public Object getValueAt(int rowIndex, int columnIndex) {

	ClasseIncluirCliente cliente = this.clientes.get(rowIndex);

	
	if(columnIndex == CODIGO)
		return cliente.getCodigo();
	if (columnIndex == NOMEEMPRESA)
		return cliente.getNomeEmpresa();
	if (columnIndex == ANYDESK)
		return cliente.getAnyDesk();
	if (columnIndex == TEAMVIEWER)
		return cliente.getTeamViewer();
	if (columnIndex == TELEFONE)
		return cliente.getTelefone();
	if (columnIndex == CELULAR)
		return cliente.getCelular();
	return "";
}

@Override
public String getColumnName(int column) {

	if(column == CODIGO) {
		return "Código";
	}
	
	if(column == NOMEEMPRESA) {
		return "Empresa";
	}
	if(column == ANYDESK) {
		return "AnyDesk";
	}
	if(column == TEAMVIEWER) {
		return "TeamViewer";
		
	}	
	if(column == TELEFONE) {
		return "Telefone";
		
	}	
	if(column == CELULAR) {
		return "Celular";
		
	}
	return null;
}

}

darlan_machado

Mas onde ocorre a atualização?

F

Aqui. Neste método. Toda vez que alguém inclui um cliente este é adicionando na JTable e também no banco.

public void ExecutarBotoes() {

jbIncluir.addActionListener(new ActionListener() {

		ClasseIncluirCliente cliente = new ClasseIncluirCliente();
		PersisitirDadosBanco persisti = new PersisitirDadosBanco();

		@Override
		public void actionPerformed(ActionEvent e) {

			if (jtfNomeEmpresa.getText().isEmpty() || jtfAnyDesk.getText().isEmpty()) {

				JOptionPane.showMessageDialog(null,
						"Ops,você não inseriru dados da Empresa e do AnyDesk! \nPor favor Verifique!", "Aviso",
						JOptionPane.WARNING_MESSAGE);

			} else {

				cliente.setNomeEmpresa(jtfNomeEmpresa.getText());
				cliente.setAnyDesk(jtfAnyDesk.getText());
				cliente.setTeamViewer(jtfTeamViewer.getText());
				cliente.setTelefone(jtfTelefone.getText());
				cliente.setCelular(jtfCelular.getText());
				cliente.setObservacao(jtfObservacao.getText());

				jtfNomeEmpresa.setText("");
				jtfAnyDesk.setText("");
				jtfTeamViewer.setText("");
				jtfTelefone.setText("");
				jtfCelular.setText("");
				jtfObservacao.setText("");

				persisti.IncluirDB(cliente);

				List<ClasseIncluirCliente> buscarTable = PersisitirDadosBanco.ConsultaDB("");

				ClasseJTable modelo = new ClasseJTable(buscarTable);
				table.setModel(modelo);

			}
		}
	});
F

A ClasseIncluirCliente é onde tem meus Getters e Setters. A Classe PersisitirDadosBanco é onde tem meus métodos para fazer inclusão no banco de dados (inserção, alteração e deleção). Mais abaixo chamei meu objeto instanciado da classe onde tem os dados do meu banco onde tem o método de Inclusão das informações passando por parâmetro a classe onde tem meus getters e setters. Ou seja, persisti.IncluirDB(cliente);

Para atualizar a tabela, fiz o List buscarTable = PersisitirDadosBanco.ConsultaDB("");

Mais abaixo chamei minha ClasseJTable que é onde tem tudo para criar as tabelas.

E por fim dei um table.setModel(modelo); onde estou chamando o método da minha JTable.

F

Segue Classe de Persistência no banco.
package br.com.BackEnd;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JOptionPane;

public class PersisitirDadosBanco {

ConexaoDB conectar = new ConexaoDB();

public void IncluirDB(ClasseIncluirCliente inserirDB) {

	Connection inserir = ConexaoDB.conectar();
	PreparedStatement inserirSQL = null;

	try {

		inserirSQL = inserir.prepareStatement(
				"insert into pchelp (nome_empresa, anydesk, teamviewer, telefone, celular, observacao) values (?,?,?,?,?,?)");

		inserirSQL.setString(1, inserirDB.getNomeEmpresa());
		inserirSQL.setString(2, inserirDB.getAnyDesk());
		inserirSQL.setString(3, inserirDB.getTeamViewer());
		inserirSQL.setString(4, inserirDB.getTelefone());
		inserirSQL.setString(5, inserirDB.getCelular());
		inserirSQL.setString(6, inserirDB.getObservacao());
		inserirSQL.executeUpdate();
		inserirSQL.close();

		JOptionPane.showMessageDialog(null, "Dados Inseridos", "Informação", JOptionPane.INFORMATION_MESSAGE);

	} catch (SQLException e) {
		JOptionPane.showMessageDialog(null, "Dados não inseridos", "Erro", JOptionPane.ERROR_MESSAGE);

		e.printStackTrace();
	}

}

public static ClasseIncluirCliente SelecionarID(Integer selecionaID) {

	ClasseIncluirCliente selecionado = new ClasseIncluirCliente();

	Connection selecaoID = ConexaoDB.conectar();
	PreparedStatement selecionarSQL = null;

	try {

		selecionarSQL = selecaoID.prepareStatement("select * from pchelp where id = ?");

		selecionarSQL.setInt(1, selecionaID);

		ResultSet selecaoRS = selecionarSQL.executeQuery();

		while (selecaoRS.next()) {

			selecionado.setCodigo(selecaoRS.getString("id"));
			selecionado.setNomeEmpresa(selecaoRS.getString("nome_empresa"));
			selecionado.setAnyDesk(selecaoRS.getString("anydesk"));
			selecionado.setTeamViewer(selecaoRS.getString("teamviewer"));
			selecionado.setTelefone(selecaoRS.getString("telefone"));
			selecionado.setCelular(selecaoRS.getString("celular"));
			selecionado.setObservacao(selecaoRS.getString("observacao"));
		}

	} catch (SQLException e) {
		e.printStackTrace();
	}
	return selecionado;
}

public void SalvarDB(ClasseIncluirCliente salvarDB) {

	Connection salvar = ConexaoDB.conectar();
	PreparedStatement salvarSQL = null;

	try {
		salvarSQL = salvar.prepareStatement(
				"update pchelp set nome_empresa = ?, anydesk = ?, teamviewer = ?, telefone = ?, celular = ?, observacao = ? where id =?");


		salvarSQL.setString(1, salvarDB.getNomeEmpresa());
		salvarSQL.setString(2, salvarDB.getAnyDesk());
		salvarSQL.setString(3, salvarDB.getTeamViewer());
		salvarSQL.setString(4, salvarDB.getTelefone());
		salvarSQL.setString(5, salvarDB.getCelular());
		salvarSQL.setString(6, salvarDB.getObservacao());
		salvarSQL.setInt(7, Integer.parseInt(salvarDB.getCodigo()));
		
		salvarSQL.executeUpdate();
		salvarSQL.close();

	} catch (SQLException e) {

		e.printStackTrace();
	}

}

public static List<ClasseIncluirCliente> ConsultaDB(String consulta) {

	Connection buscar = ConexaoDB.conectar();
	PreparedStatement consultaSQL = null;

	List<ClasseIncluirCliente> clientes = new ArrayList<>();

	try {
		consultaSQL = buscar.prepareStatement("select * from pchelp order by id desc");

		ResultSet rs = consultaSQL.executeQuery();

		while (rs.next()) {

			ClasseIncluirCliente buscarDados = new ClasseIncluirCliente();

			buscarDados.setCodigo(rs.getString("id"));
			buscarDados.setNomeEmpresa(rs.getString("nome_empresa"));
			buscarDados.setAnyDesk(rs.getString("anydesk"));
			buscarDados.setTeamViewer(rs.getString("teamviewer"));
			buscarDados.setTelefone(rs.getString("telefone"));
			buscarDados.setCelular(rs.getString("celular"));
			buscarDados.setObservacao(rs.getString("observacao"));
			clientes.add(buscarDados);

		}

	} catch (SQLException e) {
		e.printStackTrace();
	}
	return clientes;

}

public void ExcluirDB(ClasseIncluirCliente deletar) {

	Connection excluir = ConexaoDB.conectar();
	PreparedStatement excluirSQL = null;

	try {
		excluirSQL = excluir.prepareStatement("delete from pchelp where id = ?");

		excluirSQL.setInt(1, Integer.parseInt(deletar.getCodigo()));
		excluirSQL.executeUpdate();
		excluirSQL.close();

	} catch (SQLException e) {

		e.printStackTrace();
	}
}

}

darlan_machado

Mas você não tem que criar um modelo novo quando altera. Você deve, no caso, criar um método no teu table model que recebe os itens a serem exibidos e atualizar a tabela.

F

Hum… assim como você disse ali em cima certo?

public void add(Employee item) {

items.add(item);

int row = items.indexOf(item);

fireTableRowsInserted(row, row); //Áqui você atualiza a JTable

}
F

OK. Vou dar uma olhada.

darlan_machado

Sim, neste caso, ele adiciona um elemento apenas. Nada impede de você passar uma lista inteira.

F
Solucao aceita

Consegui aqui cara. Mas não fiz da forma como você me mostrou. Eu só tive que chamar o parâmetro do meu list.

jtfPesquisa.addKeyListener(new KeyListener() {

		@Override
		public void keyTyped(KeyEvent e) {

			List<ClasseIncluirCliente> buscarDados = new ArrayList<>();

			String consulta = jtfPesquisa.getText();

			for (ClasseIncluirCliente cliente : buscar) {

				if (cliente.getCodigo().contains(consulta) || cliente.getNomeEmpresa().contains(consulta)
						|| cliente.getAnyDesk().contains(consulta) || cliente.getTeamViewer().contains(consulta)
						|| cliente.getTelefone().contains(consulta) || cliente.getCelular().contains(consulta)) {

					buscarDados.add(cliente);

				//	System.out.println(consulta);

				}

			}

			ClasseJTable atualiza = new ClasseJTable(buscarDados);
			table.setModel(atualiza);

		}

Mesmo assim. Muito grato pela ajuda. Valeu mesmo.

Criado 28 de novembro de 2019
Ultima resposta 3 de dez. de 2019
Respostas 14
Participantes 2