JProgressBar

2 respostas
nana_ps

Olá Pessoal!!!

Preciso fazer um programinha que faz uma consulta em um banco de dados, e apartir dessa consulta seja gerado um xml para que possa ser aberto em um brownser... até ai tudo bem!!! Só que tá faltando uma bendita barrinha de progresso. Enquanto o usuário estiver efetuando a consulta, ele possa ter noção em que pé que tá. Procurei pela net ... tentei implementar mas não deu certo.... =/

aqui tá o evento do botão que vai chamar a classe que lista todos os contatos do banco:
btListar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				ListarTudo lt = new ListarTudo();
				lt.setVisible(true);
			}
		});
aqui tá a classe que vai fazer a consulta e gerar o xml:
import java.awt.BorderLayout;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Types;
import java.util.Vector;
import javax.swing.JFrame;

public class ListarTudo extends JFrame {

	public ListarTudo() {
		this.getContentPane().setLayout(new BorderLayout());
		Vector<Vector<String>> dados = new Vector<Vector<String>>();
		StringBuffer sb = new StringBuffer();
		
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			Connection con = DriverManager.getConnection("jdbc:odbc:agenda");
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery("select * from tbpessoa");
			ResultSetMetaData rsmd = rs.getMetaData();
			while (rs.next()) {
				Vector<String> reg = new Vector<String>();
				for (int i = 1; i <= rsmd.getColumnCount(); i++) {
					switch (rsmd.getColumnType(i)) {
					case Types.VARCHAR:
						reg.add(rs.getString(i));
						break;
					case Types.INTEGER:
						reg.add(rs.getString(i) + "");
						break;
					case Types.DOUBLE:
						reg.add(rs.getString(i) + "");
					}
				}
				dados.add(reg);
			}
			
			//gerando o xml...
			sb.append("<?xml version='1.0' encoding='UTF-8'?>");
			sb.append("<contatos>");
			for (int i = 0 ; i < dados.size(); i++) {
				Vector<String> obj = dados.get(i);
				sb.append("<contato>");
				sb.append("<registro>" + obj.get(0) + "</registro>");
				sb.append("<nome>" + obj.get(1) + "</nome>");
				sb.append("<telefone>" + obj.get(2) + "</telefone>");
				sb.append("<email>" + obj.get(3) + "</email>");
				sb.append("<datanasc>" + obj.get(4) + "</datanasc>");
				sb.append("</contato>");				
			}
			sb.append("</contatos>");
			
			//gravando o xml...
			File file = new File("c:\arquivo.xml");
			try {
				FileWriter fw = new FileWriter(file);
				fw.write(sb.toString());
				fw.flush();
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		} catch (Exception e) {
			e.printStackTrace();
		}					
		
		setTitle("Gerando XML");
		setBounds(540, 200, 440, 290);
		setVisible(true);
	}
}

Valeu........

2 Respostas

Grinvon

Você precisa saber onde começa e onde termina seu arquivo para então determinar o progresso da barra.

Durante a leitura você vai contando a quantidade percorrida e já sabendo da quantidade final dará para tirarmos a porcentagem e então configurar na jProgressBar.

Lembre-se que essa execução deve ser trabalhada em thread para que atualize sempre o conteúdo da progress.

nana_ps

Ok Grinvon!!!.. deu certo…
O que eu não gostei é que a barra fica indo pra lá e pra ca enquanto carrega… e eu queria que fosse progressivo mesmo…

Criado 11 de novembro de 2007
Ultima resposta 11 de nov. de 2007
Respostas 2
Participantes 2