Tenho uma pequena aplicação onde o usuário após fazer determinados filtros clica em um botão “Executar”. Hoje após ele fazer isso há uma conexão com Oracle que traz os dados de acordo com os filtros feitos por ele e está funcionando corretamente.
Minha idéia é que no momento que ele clicar no botão e inicializar a conexão com o banco eu quero que meu progressBar seja visualizado pelo usuário e acompanhe o progresso da extração da query.
Se não me falha a memória tu deve usar o progress como um listener que vai recebendo os dados da progressão dos eventos do teu programa. Como esta tarefa de consulta ao banco não é determinístico (o volume de dados pode influenciar de forma variável) tu deves usar algo com o que está aqui (indeterminate mode). Podes obviamente acrescentar um label pra indicar abertura de conexão, inicialização de objetos, busca… Espero que te ajude, T+
J
jaireltonPJ
Você vai ter que iniciar uma Thread pra mostrar seu JProgressBar…
E
eduardohareaPJ
Obrigado pela ajuda.
Eu crie dentro do evento actionPerformed do botão o seguinte:
Dispara a Thread deixando o progress como indeterminate(true)
Cria a conexão com o oracle.
Executa a query
Pega os dados e joga numa JTable
Seta o progress para 0
O problema é que o progress fica congelado mas o resto do processo funciona corretamente.
Vcs poderiam me ajudar como eu faço para que o progress não congele ???
I
iktuzPJ
Estais fazendo algo do tipo?
publicvoidactionPerformed(ActionEventae){Threadt=newThread(){publicvoidrun(){//inicializa o progress separadamente}}t.start();performQuery();//faz a chamada desejada... }
Está mais ou menos como no código acima? T+
E
eduardohareaPJ
Está muito estranho.
Veja abaixo meu código.
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Threadt=newThread(){publicvoidrun(){jProgressBar1.setIndeterminate(true);}};t.start();Connectioncon;Stringurl;Stringuser;Stringpassword;url=newString("jdbc:oracle:thin:@localhost");user=newString("x");password=newString("x");try{OracleDataSourceds=newOracleDataSource();ds.setURL(url);ds.getConnection(user,password);con=ds.getConnection(user,password);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("select item, cst_std, buyer from wp_itens_jgr order by 1");
Ainda assim o progress fica congelado durante a execução.
Vc pode me ajudar iktuz ?
I
iktuzPJ
Quando implementei utilizei como mostrei anteriormente. Aqui tem os demos da Sun. Só é necessário ter a versão 6 do Java instalada! Ele também utilizar monitores para simplificar o uso. T+