Ola bom dia, estou a dias tentando fazer funcionar as minhas barras de progressão de forma indeterminada, porem sem sucesso, eu tenho o seguinte cenário:
Uma tela para atualização de dados, ao clicar em iniciar ele devera se conectar com o meu servidor e atualizar uma serie e de informações, processo que demora em media de 15 minutos, e gostaria que tivesse uma barra de progressão para avisar o usuário que o sistema não travou, porem não esta funcionando, ao clicar em iniciar ele faz todo o processo do banco de dados porem não faz as barras se moverem. Desde já agradeço a ajuda, segue abaixo o meu código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.tecweb.app;
import br.com.tecweb.model.Sistema;
import br.com.tecweb.tools.AtualizaCadastroLerD3;
import br.com.tecweb.tools.ManipulaDatas;
import br.com.tecweb.tools.Mensagens;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
/**
*
* @author Beto
*/
public class AtualizacaoPadrao extends javax.swing.JDialog {
private Sistema sistema;
/**
* Creates new form AtualizacaoPadrao
*/
public AtualizacaoPadrao(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
public AtualizacaoPadrao(java.awt.Frame parent, boolean modal, Sistema sistema) {
this(parent, modal);
this.sistema = sistema;
if (this.sistema.getDataUltimaAtualizacaoGeral() == null) {
/*
* Bug Pivotal 59164932
*/
//this.sistema.setDataUltimaAtualizacaoGeral(ManipulaDatas.DataHoje());
this.sistema.setDataUltimaAtualizacaoGeral(new GregorianCalendar(2013, Calendar.SEPTEMBER, 20).getTime());
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jProgressBarCliente = new javax.swing.JProgressBar();
jProgressBarProdutos = new javax.swing.JProgressBar();
jProgressBarSimilares = new javax.swing.JProgressBar();
jTextFieldCliente = new javax.swing.JTextField();
jTextFieldProduto = new javax.swing.JTextField();
jTextFieldValores = new javax.swing.JTextField();
jTextFieldSimilares = new javax.swing.JTextField();
jProgressBarGeral = new javax.swing.JProgressBar();
jLabel5 = new javax.swing.JLabel();
jButtonIinicar = new javax.swing.JButton();
jButtonCancelar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("br/com/millano/app/Bundle_en_US"); // NOI18N
setTitle(bundle.getString("AtualizacaoPadrao.title")); // NOI18N
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setEnabled(false);
jLabel1.setText(bundle.getString("AtualizacaoPadrao.jLabel1.text")); // NOI18N
jLabel2.setText(bundle.getString("AtualizacaoPadrao.jLabel2.text")); // NOI18N
jLabel3.setText(bundle.getString("AtualizacaoPadrao.jLabel3.text")); // NOI18N
jLabel4.setText(bundle.getString("AtualizacaoPadrao.jLabel4.text")); // NOI18N
jTextFieldCliente.setEditable(false);
jTextFieldCliente.setText(bundle.getString("AtualizacaoPadrao.jTextField3.text"));
jTextFieldProduto.setEditable(false);
jTextFieldProduto.setText(bundle.getString("AtualizacaoPadraoNew.jTextField3.text")); // NOI18N
jTextFieldValores.setEditable(false);
jTextFieldValores.setText(bundle.getString("AtualizacaoPadrao.jTextFieldValores.text")); // NOI18N
jTextFieldSimilares.setEditable(false);
jTextFieldSimilares.setText(bundle.getString("AtualizacaoPadraoNew.jTextField3.text")); // NOI18N
jLabel5.setText(bundle.getString("AtualizacaoPadrao.jLabel5.text")); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 70, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(37, 37, 37))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jProgressBarCliente, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
.addComponent(jProgressBarProdutos, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarValores, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarSimilares, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarGeral, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(46, 46, 46)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextFieldProduto)
.addComponent(jTextFieldValores)
.addComponent(jTextFieldSimilares, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jTextFieldCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(3, 3, 3))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jProgressBarCliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarProdutos, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarValores, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldValores, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBarSimilares, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jTextFieldSimilares, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(38, 38, 38)
.addComponent(jLabel5))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(29, 29, 29)
.addComponent(jProgressBarGeral, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(50, 50, 50))
);
jButtonIinicar.setText(bundle.getString("AtualizacaoPadrao.jButtonIinicar.text")); // NOI18N
jButtonIinicar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonIinicarActionPerformed(evt);
}
});
jButtonCancelar.setText(bundle.getString("AtualizacaoPadrao.jButtonCancelar.text")); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(82, 82, 82)
.addComponent(jButtonIinicar)
.addGap(52, 52, 52)
.addComponent(jButtonCancelar)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonIinicar)
.addComponent(jButtonCancelar))
.addGap(0, 41, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButtonIinicarActionPerformed(java.awt.event.ActionEvent evt) {
class MyWorker extends SwingWorker<String, Object> {
@Override
protected String doInBackground() throws Exception {
Thread.sleep(10000);
jProgressBarGeral.setVisible(true);
jProgressBarGeral.setIndeterminate(true);
return "Done";
}
@Override
protected void done() {
jProgressBarGeral.setIndeterminate(false);
jProgressBarGeral.setVisible(false);
}
}
class MyWorker2 extends SwingWorker<Boolean, Object> {
@Override
protected Boolean doInBackground() throws Exception {
HabilitaCampos(false);
AtualizaDados();
HabilitaCampos(true);
Mensagens.MsgOps("Dados Atualizados Com Sucesso");
return true;
}
}
MyWorker work = new MyWorker();
MyWorker2 work2 = new MyWorker2();
work.execute();
work2.execute();
//HabilitaCampos(false);
//AtualizaDados();
//HabilitaCampos(true);
//Mensagens.MsgOps("Dados Atualizados Com Sucesso");
work.done();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the dialog */
SwingUtilities.invokeLater(new Runnable() {
//java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
AtualizacaoPadrao dialog = new AtualizacaoPadrao(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButtonCancelar;
private javax.swing.JButton jButtonIinicar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JProgressBar jProgressBarCliente;
private javax.swing.JProgressBar jProgressBarGeral;
private javax.swing.JProgressBar jProgressBarProdutos;
private javax.swing.JProgressBar jProgressBarSimilares;
private final javax.swing.JProgressBar jProgressBarValores = new javax.swing.JProgressBar();
private javax.swing.JTextField jTextFieldCliente;
private javax.swing.JTextField jTextFieldProduto;
private javax.swing.JTextField jTextFieldSimilares;
private javax.swing.JTextField jTextFieldValores;
// End of variables declaration
private void AtualizaDados() {
AtualizaCadastroLerD3 lerD3 = new AtualizaCadastroLerD3(sistema);
boolean val = AtualizaValores(lerD3);
if (val) {
jTextFieldValores.setText("OK");
} else {
jTextFieldValores.setText("Falha");
}
boolean cli = AtualizaClientes(lerD3);
if (cli) {
jTextFieldCliente.setText("OK");
} else {
jTextFieldCliente.setText("Falha");
}
//boolean prod = AtualizaProdutos(lerD3);
/*
boolean sim = AtualizaSimilares(lerD3);
if (sim) {
jTextFieldSimilares.setText("OK");
} else {
jTextFieldSimilares.setText("Falha");
}
repaint();
revalidate();
*/
this.sistema.setDataUltimaAtualizacaoGeral(ManipulaDatas.DataHoje());
getSistema().setDataUltimaAtualizacaoGeral(ManipulaDatas.DataHoje());
}
private void HabilitaCampos(boolean status) {
jButtonCancelar.setEnabled(status);
jButtonIinicar.setEnabled(status);
}
private boolean AtualizaClientes(AtualizaCadastroLerD3 lerD3) {
boolean ok = true;
/*
* Busca os ultimos clientes pela data cadastro ou pela ultima data compra
*/
jTextFieldValores.setText("Procesando");
trocaBarra(jProgressBarCliente, true);
ok = lerD3.SelecionaClientesAtualizar(ManipulaDatas.DataFormatada(getSistema().getDataUltimaAtualizacaoGeral(), "D2/"));
trocaBarra(jProgressBarCliente, false);
return ok;
}
private boolean AtualizaProdutos(AtualizaCadastroLerD3 lerD3) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private boolean AtualizaValores(final AtualizaCadastroLerD3 lerD3) {
boolean ok = true;
/*
* Busca os ultimos clientes pela data cadastro ou pela ultima data compra
*/
jTextFieldValores.setText("Procesando");
trocaBarra(jProgressBarCliente, true);
lerD3.SelecionaListaProdutosValores(ManipulaDatas.DataFormatada(getSistema().getDataUltimaAtualizacaoGeral(), "D2/"));
trocaBarra(jProgressBarCliente, false);
return ok;
}
private boolean AtualizaSimilares(AtualizaCadastroLerD3 lerD3) {
boolean ok = true;
/*
* Busca os ultimos clientes pela data cadastro ou pela ultima data compra
*/
trocaBarra(jProgressBarCliente, true);
ok = lerD3.AtualizaListaSimilaresGeral();
trocaBarra(jProgressBarCliente, false);
return ok;
}
/**
* @param sistema the sistema to set
*/
public void setSistema(Sistema sistema) {
this.sistema = sistema;
}
private void trocaBarra(final JProgressBar bar, boolean status) {
final boolean statusBar = status;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
bar.setIndeterminate(statusBar);
}
});
//bar.setIndeterminate(status);
//revalidate();
//repaint();
}
/**
* @return the sistema
*/
public Sistema getSistema() {
return sistema;
}
}