Vanilson 2 Denunciar post Postado Junho 17, 2010 Bem pessoal, estou a tentar usar o ProgressMonitor para ele carregar antes de salvar os dados ou seja antes de ele chamar o metodo inserir para salvar os dados o que está a acontecer é que ele manda primeiro a mensagem a confirmar que salvou os dados e depois é que manda o ProgressMonitor, eis o codigo: public void actionPerformed(ActionEvent evento) { if(evento.getSource() == salvar) { Component parent = (Component) evento.getSource(); monitor = new ProgressMonitor(parent, "A salvar dados do candidato", "", 0, 200); cont = 0; if (monitor != null) { if (timer == null) { timer = new Timer(250, new ActionListener() { public void actionPerformed(ActionEvent e) { //if (monitor == null) //return; if (monitor.isCanceled()) { JOptionPane.showMessageDialog(null, "Processo cancelado","Candidato", JOptionPane.INFORMATION_MESSAGE); timer.stop(); } //if(monitor.getMaximum() >= 200) //inserir(); else { cont += 20; monitor.setProgress(cont); //if(cont >= 250) //timer.stop(); //inserir(); timer.stop(); inserir(); //timer.stop(); } } }); } timer.start(); } //inserir(); //visualizartodos(); } } Método inserir public void inserir() { Gravadorpessoa pessoa = new Gravadorpessoa(); Pessoa modelo = new Pessoa(); modelo.setNome(txtnome.getText().trim()); modelo.setIdade(Integer.parseInt(txtidade.getText())); modelo.setTelefone(Integer.parseInt(txttelefone.getText())); modelo.setLocalidade(txtlocalidadademorada.getText().trim()); modelo.setBairro(txtbairromorada.getText().trim()); modelo.setRegistocriminal((String)listaregistocriminal.getSelectedItem()); //modelo.setBoletimsanidade(txtboletimsanidade.getText().trim()); //modelo.setEstadocivil(txtestadocivil.getText().trim()); modelo.setNomepai(txtnomepai.getText().trim()); //modelo.setOcupacaopai(txtocupacaopai.getText().trim()); modelo.setNomemae(txtnomemae.getText().trim()); modelo.setNumerocartaconducao(Integer.parseInt(txtnumerocartac.getText())); modelo.setNomepai(txtnomepai.getText().trim()); modelo.setOcupacaopai(txtocupacaopai.getText().trim()); modelo.setNomemae(txtnomemae.getText().trim()); //modelo.setTipocartaconducao(txttipocartac.getText().trim()); modelo.setLocal(txtlocalnaturalidade.getText().trim()); modelo.setComuna(txtcomunanaturalidade.getText().trim()); //modelo.setMunicipio(txtmunicipio.getText().trim()); //modelo.setProvincia((String) provincia.getSelectedItem()); try { boolean valida = pessoa.gravar( modelo ); if(valida) { JOptionPane.showMessageDialog(null, "Candidato cadastrado com sucesso","Cadastro", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "Já existe um candidato com o mesmo codigo","Cadastro", JOptionPane.ERROR_MESSAGE); } } catch( IOException e ) { JOptionPane.showMessageDialog(this, "Erro ao cadastrar o candidato","Cadastro", JOptionPane.ERROR_MESSAGE); } } Compartilhar este post Link para o post Compartilhar em outros sites
Vanilson 2 Denunciar post Postado Junho 17, 2010 Bem pessoal, resolvi o meu problema usando Thread: public void actionPerformed(ActionEvent evento) { if(evento.getSource() == salvar) { final ProgressMonitor pm = new ProgressMonitor(this, "A salvar dados...", "", 0, 100); final Thread thread = new Thread(new Runnable() { public void run() { for (int i = 0; i <= 100; i++) { pm.setProgress(i); pm.setNote(i + " %"); try { Thread.sleep(30); } catch (InterruptedException ex) { JOptionPane.showMessageDialog(null,"Erro ao salvar os dados","Candidato",JOptionPane.ERROR_MESSAGE); } } inserir(); } }); thread.start(); } } Compartilhar este post Link para o post Compartilhar em outros sites