Jump to content

calves_oliveira

Members
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Comum

About calves_oliveira

  1. calves_oliveira

    Manipular Jtable

    Olá pessoal, sou iniciante e antes de postar aqui meu pedido de ajuda estou a uns dias pesquisando como sanar minhas duvidas mas sem sucesso. bom vamos, lá… Em um form tenho um campo jtextField, jtable e botões novo, inserir, atualizar, excluir e atualizar. manipular a tabela do banco de dados está tudo ok , carregar a jtable tbm! porem não estou conseguindo atualizar o jtable, ao excluir, editar sem ter que ficar buscando do BD o tempo todo até mesmo que não faz sentido isso. (vários lugares ensinam desta maneira). segue as classes: package Model.Table; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; /** * * @author Usuario */ public abstract class TableModelPadrao extends AbstractTableModel { protected String[] colunas; protected ArrayList linhas; protected boolean[] colEditavel; public TableModelPadrao(ArrayList linhas) { setColunas(criarColunas()); setColEditavel(colEditavel); this.linhas = linhas; } protected abstract String[] criarColunas(); protected abstract boolean[] colEditavel(); @Override public int getRowCount() { if (linhas != null) { return linhas.size(); } else { return 0; } } @Override public int getColumnCount() { return colunas.length; } @Override public boolean isCellEditable(int row, int col) { return false; } @Override public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } @Override public String getColumnName(int col) { return colunas[col]; } //Getter e Setter public String[] getColunas() { return colunas; } public final void setColunas(String[] colunas) { this.colunas = colunas; } public ArrayList getLinhas() { return linhas; } public void setLinhas(ArrayList linhas) { this.linhas = linhas; fireTableDataChanged(); } public boolean[] getColEditavel() { return colEditavel; } public void setColEditavel(boolean[] colEditavel) { this.colEditavel = colEditavel; } public abstract void addRow(Object o); public abstract void removeRow(int linha); @Override public abstract void setValueAt(Object o, int linha, int coluna); } package Model.Table; import Model.ArroladoPor; import java.util.ArrayList; /** * * @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: 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); this.fireTableDataChanged(); } @Override public void removeRow(int linha) { this.linhas.remove(linha); this.fireTableRowsDeleted(linha, linha); } @Override public void setValueAt(Object obj, int linha, int coluna) { ArroladoPor a = (ArroladoPor) linhas.get(linha); //verifica qual valor vai ser alterado 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; } //avisa que os dados mudaram this.fireTableCellUpdated(linha, coluna); } } package Controller.Helper; import Model.ArroladoPor; import Dao.ArroladoPorDao; 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.event.ListSelectionListener; 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 getModeloArroladoPor() { 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 getModeloInserir() { String descricao = view.getTxtDescricao().getText().toUpperCase().trim(); objClasse = new ArroladoPor(descricao); return objClasse; } public void inserir() throws SQLException { 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(getModeloInserir()) != true) { dao.salvar(getModeloInserir());//SALVA NO BANCO modeloTabela.addRow(objClasse);//INSERI OBJ NA TABELA modeloTabela.fireTableDataChanged(); 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 { if (view.getTabela().getSelectedRow() != -1) { if (dao.verificaAlterar(getModeloArroladoPor()) == true) { JOptionPane.showMessageDialog(null, "Não foi possivel editar, registro já existente!", "Verificação ao Editar", JOptionPane.ERROR_MESSAGE); } else { dao.alterar(getModeloArroladoPor()); //ATUALIZA NO BANCO helperForHall.fieldClean(view.getPnlPesquisarPor()); //ATUALIZA A TABELA modeloTabela.setValueAt(getModeloArroladoPor(), view.getTabela().getSelectedRow(), 0); modeloTabela.setValueAt(getModeloArroladoPor(), 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", "Nao"}; 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(getModeloArroladoPor()) != true) { //NÃO EXISTE EM OUTRA TABELA PODE EXCLUIR dao.excluir(getModeloArroladoPor()); 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 carregaTabela() 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(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { selecionarLinha(view.getTabela()); } } }); 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 setarEstadoComponentes(int estado) { switch (estado) { //inicializa o formulario //Ao clicar 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; } } }
  2. calves_oliveira

    Thread + Timer

    Pessoal, não tenho conhecimento em Thread e em Timer mas consegui criar esses dois métodos porém está com um erro e não consigo resolver, a idéia é o seguinte: um classe manda uma jlabel para o método mostraLabel e ele chama o outro método desizaLabel os dois metodos abaixo vai apresentar a mensagem durante 3 segundos e dois deslizar para sair da tela. Sei que tem um erro no loop do metodo deslizaLabel pois ele esta com loop infinito mas não consigo tirar… quero que ao jlabel deslizar até o fim do form ele finalize o Thread. e também se alguém tiver alguma sugestão de como otimizar esse processo será bem vindo. public void mostraLabel(JLabel lbl) { ActionListener action = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { tempo.stop(); deslizaLabel(lbl); } }; tempo = new Timer(3000, action); tempo.start(); } private void deslizaLabel(JLabel lbl){ new Thread(){ @Override public void run(){ int x = 0; int y = lbl.getLocation().y; while(true){ x++; if(x > lbl.getWidth()){ this.stop(); } lbl.setLocation(x,y); try { sleep(10); } catch (InterruptedException ex) { } } } }.start();}
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.