oi eu tou tentando fazer um programa q tem uma jtable que mostra os dados de uma tabela de um banco de dados , tem tambem uns jtextField e 1 botao q é pa inserir no banco<== isso tudo ta funcionando sem erros
o problema e que quando eu insiro no banco em tempo de execução (claro) a tabela nao atualiza ai eu tenho q fechar e abrir alguem sabe como eu resolvo?
Ao atualizar, você chama o método fireTableRowChanged do seu model, indicando que linha foi alterada, para que a tabela a repinte.
Outra forma, mais tosca, é chamar o método repaint() para a tabela repintar intera.
maykonJAVA
Muito obrigado pela sua resposta amigo!
sou iniciante mas,
se não tou enganado esse metodo fireTableRowChanged e do javax.swing.table.AbstractTableModel né?
quando devo xamar esse metodo? em meu pensamento eu axo q devo criar um metodo i colocar esse dentro tipo
public void atualizar(){
fireTableRowChanged()
}
estou errado?
vcs kerem q eu post meo codigo pa analizar? pq eu fiz isso e nao deu certo axo q tou errando em algum lugar
maykonJAVA
Se poder analizar o codigo tah ai
manipularBanco.java
packageChamada;importjava.sql.*;importjavax.swing.table.AbstractTableModel;classmanipularBancoextendsAbstractTableModel{privateConnectionconexao;privateStatementsta;privateResultSetresultado;privateResultSetMetaDatametaData;privateintnlinhas;//abre conexaopublicvoidopen(){try{Class.forName("com.mysql.jdbc.Driver");conexao=DriverManager.getConnection("jdbc:mysql://localhost/meubanco?autoReconnect=true","root","");}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}//fexa conexaopublicvoidclose(){try{if(sta!=null)sta.close();conexao.close();}catch(SQLExceptione){e.printStackTrace();}}//inseri novo alunono bancopublicvoidnovoAluno(inta,Stringb){try{open();sta=conexao.createStatement();sta.executeUpdate("INSERT INTO presenca(n_matricula, nome) "+"VALUES('"+a+"','"+b+"')");close();}catch(SQLExceptione){close();e.printStackTrace();}}//inseri nova chamada no bancopublicvoidnovaChamada(Stringc){try{open();sta=conexao.createStatement();sta.executeUpdate("ALTER TABLE presenca ADD `"+c+"` INT NULL");close();}catch(SQLExceptione){close();e.printStackTrace();}}//consulta tabela table modelpublicvoidconsultarTabela(StringSQL_QUERY)throwsSQLException,ClassNotFoundException{open();sta=conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);setQuery(SQL_QUERY);}publicClassgetColumnClass(intcolumn)throwsIllegalStateException{try{StringclassName=metaData.getColumnClassName(column+1);returnClass.forName(className);}catch(Exceptionexception){exception.printStackTrace();}returnObject.class;}publicintgetColumnCount()throwsIllegalStateException{try{returnmetaData.getColumnCount();}catch(SQLExceptionsqlException){sqlException.printStackTrace();}return0;}publicStringgetColumnName(intcolumn)throwsIllegalStateException{try{returnmetaData.getColumnName(column+1);}catch(SQLExceptionsqlException){sqlException.printStackTrace();}return"";}publicintgetRowCount()throwsIllegalStateException{returnnlinhas;}publicObjectgetValueAt(introw,intcolumn)throwsIllegalStateException{try{resultado.absolute(row+1);returnresultado.getObject(column+1);}catch(SQLExceptionsqlException){sqlException.printStackTrace();}return"";}//metodo q ainda vou utilizar para fazer pesquisapublicvoidsetQuery(Stringquery)throwsSQLException,IllegalStateException{resultado=sta.executeQuery(query);metaData=resultado.getMetaData();resultado.last();nlinhas=resultado.getRow();fireTableStructureChanged();}}
visual.java
packageChamada;importjava.awt.*;importjava.awt.event.*;importjava.sql.*;importjavax.swing.*;classvisualextendsJFrame{StringSQL_QUERY="SELECT * from presenca";manipularBancomb=newmanipularBanco();publicvisual(){super("teste");componentes();tabelaV();}publicvoidcomponentes(){Containerctn=getContentPane();FlowLayoutlayout=newFlowLayout();layout.setAlignment(FlowLayout.LEFT);ctn.setLayout(layout);JLabella=newJLabel("Nº Matricula");finalJTextFieldca=newJTextField("",10);ctn.add(la);ctn.add(ca);JLabellb=newJLabel("Nome");finalJTextFieldcb=newJTextField("",10);ctn.add(lb);ctn.add(cb);JButtonb1=newJButton("add Aluno");ctn.add(b1);JLabellc=newJLabel("Data da chamada");finalJTextFieldcc=newJTextField("",10);ctn.add(lc);ctn.add(cc);JButtonb2=newJButton("add Nova Chamada");ctn.add(b2);b1.addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEventevt){b1MouseClicked(evt);}privatevoidb1MouseClicked(MouseEventevt){inta=Integer.parseInt(ca.getText());Stringb=cb.getText();manipularBancomb=newmanipularBanco();mb.novoAluno(a,b);mb.fireTableStructureChanged();}});b2.addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEventevt){b2MouseClicked(evt);}privatevoidb2MouseClicked(MouseEventevt){Stringc=cc.getText();manipularBancomb=newmanipularBanco();mb.novaChamada(c);}});}publicvoidtabelaV(){try{mb.consultarTabela(SQL_QUERY);JTableres=newJTable(mb);add(newJScrollPane(res),BorderLayout.CENTER);setSize(500,500);setVisible(true);}catch(ClassNotFoundExceptionclassNotFound){JOptionPane.showMessageDialog(null,"Driver SQL não encontrado","Driver não encontrado",JOptionPane.ERROR_MESSAGE);mb.close();System.exit(1);}catch(SQLExceptionsqlException){JOptionPane.showMessageDialog(null,sqlException.getMessage(),"Database error",JOptionPane.ERROR_MESSAGE);mb.close();System.exit(1);}}publicstaticvoidmain(Stringargs[]){newvisual();}}
maykonJAVA
iaew jente niguem parou pa analizar o codigo? vlw…