Olá amigos!
Estou com um pequeno problema com minha JTable.
O que deve fazer? Qdo estou cadastrando um serviço, posso clicar em consultar serviços e isso me trará todos os serviço cadastrados e eu posso filtrar esses serviços digitando o nome.
O que da errado? Ele não preenche minha tabela com os serviços que eu ‘puxei’ do banco.
Não estou conseguindo enxergar meu erro. Então vim recorrer a vocês que são programadores muito mais experientes.
public class CadastroServico extends javax.swing.JFrame {
/** Creates new form CadastroServico */
public CadastroServico() {
initComponents();
setLocationRelativeTo(null);
}
private void jButtonCancelarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
private void jButtonNovoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.jTextFieldDescricao.setText(null);
this.jTextFieldFirma.setText(null);
}
private void jButtonConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(this.jTextFieldDescricao.getText().equals("")) {
JOptionPane.showMessageDialog(this, "Preencha o campo 'Descrição' corretamente.");
} else {
if(this.jTextFieldFirma.getText().equals("")) {
JOptionPane.showMessageDialog(this, "Preencha o campo 'Firma' corretamente.");
} else {
String descricao;
String firma;
descricao = this.jTextFieldDescricao.getText();
firma = this.jTextFieldFirma.getText();
DAO dao = new DAOFactory().getServicoDAO();
DAOFactory factory = new DAOFactory();
Servico servico = new Servico();
servico.setDescrição(descricao);
servico.setFirma(firma);
factory.beginTransaction();
dao.adiciona(servico);
factory.commit();
factory.close();
}
}
}
private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
consultar = ConsultaServico.getInstanceConsultaServico();
DAO dao = new DAOFactory().getServicoDAO();
DAOFactory factory = new DAOFactory();
factory.beginTransaction();
List<Servico> lista = dao.listaTudo();
factory.close();
consultar.setLista(lista);
consultar.showConsulta();
if (consultar.isStatusParaAtualizacao() == true) {
// Atualizar();
}
} catch (Exception ex) {
Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CadastroServico().setVisible(true);
}
});
}
}
Classe ConsultaServico
public class ConsultaServico extends javax.swing.JDialog {
/** Creates new form ConsultaServico */
public ConsultaServico() {
super(new Frame(), true);
initComponents();
setLocationRelativeTo(null);
AlteraCellRenderer();
}
public void AlteraCellRenderer() {
jtTabela.setDefaultRenderer(Object.class, new MyCellRenderer());
jtTabela.setDefaultRenderer(Integer.class, new MyCellRenderer());
jtTabela.setDefaultRenderer(Double.class, new MyCellRenderer());
jtTabela.setDefaultRenderer(Float.class, new MyCellRenderer());
jtTabela.setDefaultRenderer(Date.class, new MyCellRenderer());
}
public void AplicaRowSorterRowFilter() {
// cria um TableRowSorter a partir do TableModelPadraoParaBean
if (sorter == null) {
sorter = new TableRowSorter<TableModel>(myTablemodel);
}
// Adiciona o objeto TableRowSorter à Tabela
jtTabela.setRowSorter(sorter);
String text = jtfFiltro.getText();
if (text.length() == 0) {
sorter.setRowFilter(null);
} else {
try {
// Cria um Filtro de pesquisa com base na coluna selecionada
sorter.setRowFilter(RowFilter.regexFilter('^' + text, getColuna()));
setStatusParaAtualizacao(false);
} catch (PatternSyntaxException pse) {
System.err.println("Erro");
}
}
}
public int getColuna() {
return coluna;
}
public void setColuna(int coluna) {
this.coluna = coluna;
}
public boolean isStatusParaAtualizacao() {
return StatusParaAtualizacao;
}
public void setStatusParaAtualizacao(boolean StatusParaAtualizacao) {
this.StatusParaAtualizacao = StatusParaAtualizacao;
}
private void jtfFiltroKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
AplicaRowSorterRowFilter();
}
private void jtTabelaMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount() == 1 && jtTabela.getSelectedRow() >= 0) {
// Seta o indice da coluna selecionada para a filtragem somando 1, pois a 1° coluna esta oculta
setColuna(jtTabela.getSelectedColumn());
int viewRow = jtTabela.getSelectedRow();
if (viewRow >= 0) {
int modelRow = jtTabela.convertRowIndexToModel(viewRow);
/* Seta o Cidigo primario do banco de dados que esta oculto na primeira coluna
para realizar as consultas necessarias à alteração e exclusão de dados*/
setCodigoPesquisado(Integer.valueOf(((TableModelPadraoParaBean) jtTabela.getModel()).getValueAt(modelRow, 0).toString()));
}
setStatusParaAtualizacao(true);
}
}
private void formWindowClosed(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
try {
Utilitarios.clearComponent(this.getContentPane());
this.finalize();
} catch (Throwable ex) {
Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
}
}
/* Metodo responsavel por pegar o codigo primario que esta oculto na 1° coluna
que setado quando clicamos na Tabela */
public Integer getCodigoPesquisado() {
return codigoPesquisado;
}
/* Metodo responsavel por setar o codigo primario oculto na 1° coluna quando
clicamos na Tabela*/
public void setCodigoPesquisado(Integer codigoPesquisado) {
this.codigoPesquisado = codigoPesquisado;
}
public List<?> getLista() {
return this.lista;
}
// Metodo responsavel por setar uma lista de beans
public void setLista(List<?> lista) {
this.lista = lista;
}
public void showConsulta() {
if (myTablemodel == null) {
myTablemodel = new TableModelPadraoParaBean();
}
myTablemodel.atualiza(getLista());
jtTabela.setModel(myTablemodel);
// jtTabela.removeColumn(jtTabela.getColumnModel().getColumn(0));
ConsultaServico.Consulta.setVisible(true);
}
public Date ConverteDataParaBanco(String data) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date date = new java.sql.Date(formatter.parse(data).getTime());
return date;
}
public String ConverteDataParaTradicional(Date date) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String data = formatter.format(date);
return data;
}
public static ConsultaServico getInstanceConsultaServico() {
if (Consulta == null) {
try {
Consulta = new ConsultaServico();
} catch (Exception ex) {
Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
}
}
return Consulta;
}
////////////////////////////////////////////////////////////////////////////////////////
// MODELO DE CELLRENDERER CRIADO PARA SATISFAZER A NECESSIDADE DE UMA TABELA ZEBRADA E//
// QUE PINTASSE A CELULA QUANDO SELECIONADA //
////////////////////////////////////////////////////////////////////////////////////////
class MyCellRenderer extends DefaultTableCellRenderer {
private Color whiteColor = new Color(254, 254, 254);
private Color alternateColor = new Color(123, 193, 255);
private Color selectedColor = new Color(61, 128, 223);
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean selected, boolean focused, int row,
int column) {
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
Color bg = null;
// Testa se não existe celula selecionada, se não existir zebra a tabela
if (!selected) {
bg = (row % 2 == 0 ? alternateColor : whiteColor);
} // Testa se existe celula selecionada, se exitir tambem zebra a tabela
else {
// bg = selectedColor;
bg = (row % 2 == 0 ? alternateColor : whiteColor);
}
// Pinta a celula selecionada de amarelo
if (row == table.getSelectedRow() && column == table.getSelectedColumn()) {
bg = Color.YELLOW;
}
setBackground(bg);
// setForeground(selected ? Color.red : Color.black);
return this;
}
}
}
Desculpem pelo tamanho das classes, mas como eu disse…não sou muito experiente xD
Tirei todo o trecho de código gerado pelo netbeans para uma melhor visualização
Alguem pode, por favor, me ajudar a descobrir onde estou errando?