Ir para conteúdo
Fórum Script Brasil

Calves Oliveira

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre Calves Oliveira

Calves Oliveira's Achievements

0

Reputação

  1. Pessoal, como pego uma linha na jtable após utilizar o filtro (TableRowSorter)?
  2. Olá pessoal, é possível localizar uma linha na jtable sem filtrar a lista?Exemplo: ao digitar em um jtextField o jscrollpane rola sozinho e a linha desejada ficar uma seta ou cor diferente?
  3. Olá pessoal, tenho um form que carrega a jtable certinho com os dados bancos. Sem utilizar o filtro na lista consigo realizar as operações de excluir e atualizar normalmente. Porém ao acionar o evento KeyReleased no jtextField filtrando a tabela (Filtra corretamente) acontece a seguinte situação: Editar: ao selecionar a linha desejado para editar o campo preenche uma jtextField e ao alterar a informação ao invés de alterar a linha selecionada é criado uma outra linha com a atualização. Excluir: ao selecionar a linha desejado não exclui. Isso acontece apenas com o filtro ativado! Segui minhas classes relevantes para analise: Meu Formulario package View.Forms; import Controller.ArroladoPorController; import java.awt.Color; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; /** * * @author Usuario */ public final class FrmArroladoPor extends javax.swing.JDialog { private final ArroladoPorController controller; private String estado; /** * Creates new form frmArroladoPor * * @param owner * @param modal * @throws java.sql.SQLException */ public FrmArroladoPor(java.awt.Frame owner, boolean modal) throws SQLException { super(owner, modal); initComponents(); controller = new ArroladoPorController(this); startScreen(); } private void initComponents() { (...) private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) { estado = "salvar"; controller.setarEstadoComponentes(4); controller.limparCampos(); } private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) { try { controller.inserir(estado); controller.setarEstadoComponentes(1); } catch (SQLException ex) { Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex); } controller.limparCampos(); } private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) { try { controller.excluir(); controller.limparCampos(); controller.setarEstadoComponentes(1); } catch (SQLException ex) { Logger.getLogger(FrmArroladoPor.class.getName()).log(Level.SEVERE, null, ex); } } private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) { controller.setarEstadoComponentes(6); estado = "editar"; } private void btnSelecionarActionPerformed(java.awt.event.ActionEvent evt) { } private void txtPesquisarKeyReleased(java.awt.event.KeyEvent evt) { // estado = "editar"; controller.filtrar(); controller.setarEstadoComponentes(2); } private void tabelaKeyPressed(java.awt.event.KeyEvent evt) { estado = "editar"; controller.selecionarLinha(); controller.setarEstadoComponentes(3); } private void txtDescricaoKeyReleased(java.awt.event.KeyEvent evt) { getTxtDescricao().setBackground(Color.WHITE); } public void startScreen() throws SQLException { controller.iniciaTela(); controller.carregaTabela(); controller.setarEstadoComponentes(1); } public JButton getBtnEditar() { return btnEditar; } public void setBtnEditar(JButton btnEditar) { this.btnEditar = btnEditar; } public JButton getBtnExcluir() { return btnExcluir; } public void setBtnExcluir(JButton btnExcluir) { this.btnExcluir = btnExcluir; } public JButton getBtnNovo() { return btnNovo; } public void setBtnNovo(JButton btnNovo) { this.btnNovo = btnNovo; } public JButton getBtnSalvar() { return btnSalvar; } public void setBtnSalvar(JButton btnSalvar) { this.btnSalvar = btnSalvar; } public JButton getBtnSelecionar() { return btnSelecionar; } public void setBtnSelecionar(JButton btnSelecionar) { this.btnSelecionar = btnSelecionar; } public JTable getTabela() { return tabela; } public void setTabela(JTable tabela) { this.tabela = tabela; } public JTextField getTxtPesquisar() { return txtPesquisar; } public void setTxtPesquisar(JTextField txtPesquisar) { this.txtPesquisar = txtPesquisar; } public JPanel getPnlCadastro() { return pnlCadastro; } public void setPnlCadastro(JPanel pnlCadastro) { this.pnlCadastro = pnlCadastro; } public JPanel getPnlPesquisarPor() { return pnlPesquisarPor; } public void setPnlPesquisarPor(JPanel pnlPesquisarPor) { this.pnlPesquisarPor = pnlPesquisarPor; } public JPanel getPnlTabela() { return pnlTabela; } public void setPnlTabela(JPanel pnlTabela) { this.pnlTabela = pnlTabela; } public JTextField getTxtDescricao() { return txtDescricao; } public void setTxtDescricao(JTextField txtDescricao) { this.txtDescricao = txtDescricao; } // Variables declaration - do not modify private javax.swing.JButton btnEditar; private javax.swing.JButton btnExcluir; private javax.swing.JButton btnNovo; private javax.swing.JButton btnSalvar; private javax.swing.JButton btnSelecionar; private javax.swing.JLabel jLabel1; private javax.swing.JPanel pnlAções; private javax.swing.JPanel pnlCadastro; private javax.swing.JPanel pnlPesquisarPor; private javax.swing.JPanel pnlTabela; private javax.swing.JScrollPane scrPane; private javax.swing.JTable tabela; private javax.swing.JTextField txtDescricao; private javax.swing.JTextField txtPesquisar; MEU CONTROLLER package Controller; import Controller.Helper.ArroladoPorHelper; import Controller.Helper.HelperForHall; import View.Forms.FrmArroladoPor; import java.sql.SQLException; /** * * @author Usuario */ public class ArroladoPorController { private final FrmArroladoPor view; private final ArroladoPorHelper helper; private final HelperForHall helperForHall; public ArroladoPorController(FrmArroladoPor view) throws SQLException { this.view = view; this.helper = new ArroladoPorHelper(view); this.helperForHall = new HelperForHall(); } public void limparCampos() { helperForHall.limpaCampos(view.getPnlPesquisarPor()); helperForHall.limpaCampos(view.getPnlCadastro()); } public void iniciaTela() { helperForHall.iniciaTela(this.view, "Pesquisa e Cadastra Arrolado Por"); } public void carregaTabela() throws SQLException { helper.carregaTabelaBuscandoNoBanco(); } public void inserir(String estado) throws SQLException { if ("salvar".equals(estado)) { helper.inserir(); } if ("editar".equals(estado)) { helper.atualizar(); } } public void excluir() throws SQLException { helper.excluir(); } public void filtrar() { helper.filtrarTabela(); } public void selecionarLinha() { helper.selecionarLinha(view.getTabela()); } public void setarEstadoComponentes(int estado) { helper.setarEstadoComponentes(estado); } } HELPER DO CONTROLLER package Controller.Helper; import Model.ArroladoPor; import Dao.ArroladoPorDao; import Model.Table.MeuRenderer; import Model.Table.TableArroladoPor; import View.Forms.FrmArroladoPor; import java.awt.Color; import java.sql.SQLException; import java.util.ArrayList; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.RowFilter; import javax.swing.event.ListSelectionEvent; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; /** * * @author Usuario */ public class ArroladoPorHelper { private FrmArroladoPor view; private TableArroladoPor modeloTabela; private HelperForHall helperForHall; private ArroladoPorDao dao; private ArroladoPor objClasse; public ArroladoPorHelper(FrmArroladoPor view) throws SQLException { this.dao = new ArroladoPorDao(); this.view = view; this.helperForHall = new HelperForHall(); } public ArroladoPorHelper() { } public ArroladoPor instanciaObjClasseArroladoPorComId() { String descricao = view.getTxtDescricao().getText().toUpperCase().trim(); int id = Integer.parseInt((view.getTabela().getValueAt(view.getTabela().getSelectedRow(), 0)).toString()); objClasse = new ArroladoPor(id, descricao); return objClasse; } public ArroladoPor instanciaObjClasseArroladoPorSemId() { String descricao = view.getTxtDescricao().getText().toUpperCase().trim(); objClasse = new ArroladoPor(descricao); return objClasse; } public void inserir() throws SQLException {//pronto if (view.getTxtDescricao().getText().trim().equalsIgnoreCase("")) { JOptionPane.showMessageDialog(null, "O campo descrição não pode ficar vazio!", "Validação ", JOptionPane.ERROR_MESSAGE); view.getTxtDescricao().setBackground(Color.LIGHT_GRAY); } else { if (dao.VerificacaoSalvar(instanciaObjClasseArroladoPorSemId()) != true) { dao.salvar(instanciaObjClasseArroladoPorSemId());//SALVA NO BANCO modeloTabela.addRow(objClasse); helperForHall.limpaCampos(view.getPnlPesquisarPor()); javax.swing.JOptionPane.showMessageDialog(null, "Novo registro armazenado com sucesso!", "Cadastro", JOptionPane.INFORMATION_MESSAGE); } else { javax.swing.JOptionPane.showMessageDialog(null, "Não foi possivel salvar, registro já existente!", "Verificação ao Salvar ", JOptionPane.ERROR_MESSAGE); } } } public void atualizar() throws SQLException {//pronto if (view.getTabela().getSelectedRow() != -1) { if (dao.verificaAlterar(instanciaObjClasseArroladoPorComId()) == true) { JOptionPane.showMessageDialog(null, "Não foi possivel editar, registro já existente!", "Verificação ao Editar", JOptionPane.ERROR_MESSAGE); } else { dao.alterar(instanciaObjClasseArroladoPorComId()); helperForHall.limpaCampos(view.getPnlPesquisarPor()); //ATUALIZA A TABELA modeloTabela.setValueAt(instanciaObjClasseArroladoPorComId(), view.getTabela().getSelectedRow(), 0); modeloTabela.setValueAt(instanciaObjClasseArroladoPorComId(), view.getTabela().getSelectedRow(), 1); modeloTabela.fireTableDataChanged(); JOptionPane.showMessageDialog(null, "Alteracão realizado com sucesso!", "Alteração", JOptionPane.INFORMATION_MESSAGE); } } } public void excluir() throws SQLException { String simNao[] = {"Sim", "não"}; int exclui = JOptionPane.showOptionDialog(null, "Confirma exclusão?", "Excluindo...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, simNao, simNao[1]); if (exclui == 0) { if (view.getTabela().getSelectedRow() != -1) { if (dao.verificaExcluir(instanciaObjClasseArroladoPorComId()) != true) { //NÃO EXISTE EM OUTRA TABELA PODE EXCLUIR dao.excluir(instanciaObjClasseArroladoPorComId()); modeloTabela.removeRow(view.getTabela().getSelectedRow()); JOptionPane.showMessageDialog(null, "Exclusão realizado com sucesso!", "Exclusão", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "Registro existente em outra tabela!", "Verificação ", javax.swing.JOptionPane.ERROR_MESSAGE); } } } } public void carregaTabelaBuscandoNoBanco() throws SQLException { ArrayList lista = (ArrayList) dao.selectAll(); modeloTabela = new TableArroladoPor(lista); configuraTabela(modeloTabela); } private void configuraTabela(TableArroladoPor model) { view.getTabela().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ListSelectionModel lsm = view.getTabela().getSelectionModel(); lsm.addListSelectionListener((ListSelectionEvent e) -> { if (!e.getValueIsAdjusting()) { selecionarLinha(view.getTabela()); } }); javax.swing.table.TableCellRenderer renderer = new MeuRenderer(); view.getTabela().setDefaultRenderer(Object.class, renderer); TableRowSorter<TableModel> sorter = new TableRowSorter<>(modeloTabela); view.getTabela().setRowSorter(sorter); view.getTabela().setModel(model); view.getTabela().getTableHeader().setReorderingAllowed(false); view.getTabela().getColumnModel().getColumn(0).setMinWidth(0); view.getTabela().getColumnModel().getColumn(0).setMaxWidth(0); } public void filtrarTabela() { TableRowSorter<TableModel> sorter = new TableRowSorter<>(modeloTabela); view.getTabela().setRowSorter(sorter); String text = view.getTxtPesquisar().getText().toUpperCase(); if (text.length() == 0) { sorter.setRowFilter(null); } else { sorter.setRowFilter(RowFilter.regexFilter(text)); } } public void selecionarLinha(JTable tabela) { if (tabela.getSelectedRow() != -1) { int lin = view.getTabela().getSelectedRow(); String descricao = (view.getTabela().getValueAt(lin, 1).toString().trim()); view.getTxtDescricao().setText(descricao); setarEstadoComponentes(3); } else { view.getTxtDescricao().setText(""); } } // public void cancelarOperacao() throws SQLException { // FrmArroladoPor frmArroladoPor; // frmArroladoPor = new FrmArroladoPor(null, true); // frmArroladoPor.startScreen(); // helperForHall.fieldClean(view.getPnlCadastro()); // helperForHall.fieldClean(view.getPnlPesquisarPor()); // view.getTxtDescricao().setBackground(Color.white); // preencheTabela(); // setarEstadoComponentes(1); // } public void setarEstadoComponentes(int estado) { switch (estado) { //inicializa o formulario //ao excluir case 1: view.getTxtPesquisar().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(true); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //ao filtrar case 2: view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(true); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //ao selecionar linha tabela case 3: view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(false); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(false); view.getBtnEditar().setEnabled(true); view.getBtnExcluir().setEnabled(true); view.getBtnSelecionar().setEnabled(false); break; //ao clicar botão novo case 4: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //ao apertar Salvar case 5: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(false); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; //ao apertar Editar case 6: view.getTxtDescricao().grabFocus(); view.getTxtPesquisar().setEnabled(true); view.getTabela().setEnabled(true); view.getTxtDescricao().setEnabled(true); view.getBtnNovo().setEnabled(false); view.getBtnSalvar().setEnabled(true); view.getBtnEditar().setEnabled(false); view.getBtnExcluir().setEnabled(false); view.getBtnSelecionar().setEnabled(false); break; default: break; } } } MODELA DA TABELA DA CLASSE package Model.Table; import Model.ArroladoPor; import java.util.ArrayList; import java.util.Collections; /** * * @author Usuario */ public class TableArroladoPor extends TableModelPadrao { public TableArroladoPor(ArrayList linhas) { super(linhas); } @Override public Object getValueAt(int rowIndex, int columnIndex) { ArroladoPor a = (ArroladoPor) linhas.get(rowIndex); switch (columnIndex) { case 0: return a.getIdArrolado(); case 1: return a.getDescricao(); default: // Se o índice da coluna não for válido, lança um // IndexOutOfBoundsException (Exceção de índice fora dos limites). // Não foi necessário verificar se o índice da linha é inválido, // pois o próprio ArrayList lança a exceção caso seja inválido. throw new IndexOutOfBoundsException("Numero de colunas no TableArroladoPor" + " não é compativel com dados do banco"); } } @Override protected String[] criarColunas() { return new String[]{"Id", "Descricão"}; } @Override protected boolean[] colEditavel() { return new boolean[]{false, false}; } @Override public void addRow(Object o) { this.linhas.add(o); Collections.sort (this.linhas); this.fireTableDataChanged(); } @Override public void removeRow(int linha) { this.linhas.remove(linha); this.fireTableRowsDeleted(linha, linha); this.fireTableDataChanged(); } @Override public void setValueAt(Object obj, int linha, int coluna) { ArroladoPor a = (ArroladoPor) linhas.get(linha); switch (coluna) { // case 0: // Primeira coluna é o codigo. // a.setIdArrolado(Integer.parseInt((String) obj)); // break; case 1: // Segunda coluna é o descricao. a.setDescricao(obj.toString()); break; } this.fireTableCellUpdated(linha, coluna); } @Override public int getRowCount() { return linhas.size(); } @Override public int getColumnCount() { return colunas.length; } }
×
×
  • Criar Novo...