estou fazendo um trabalho sobre threds e nao estou conseguindo fazer funcionar a barra de progresso. agradeço auxilio!!!
esta é a classe Trabalhador:package atividade;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
public class Trabalhador extends Thread {
private int qtde, temp;
private double valor, total;
JProgressBar progessBar;
JTextField metaEmp, totalEmp;
public Trabalhador(){
this(0,0,0,0, null,null,null);
}
public Trabalhador(int qtde, int temp, double valor, double total,
JProgressBar progessBar, JTextField metaEmp, JTextField totalEmp) {
super();
this.qtde = qtde;
this.temp = temp;
this.valor = valor;
this.total = total;
this.progessBar = progessBar;
this.metaEmp = metaEmp;
this.totalEmp = totalEmp;
}
public void run(){
synchronized (metaEmp.getText()) {
for(int i = 0; i < qtde; i++){
try{
total += valor;
totalEmp.setText(total + "");
metaEmp.setText((Double.parseDouble(metaEmp.getText()) + valor) + "");
progessBar.setValue((int) Double.parseDouble(metaEmp.getText()));
sleep((long) (Math.random() * temp));
}catch(InterruptedException e){
}
}
}
}}
Esta e a Tela:
package atividade;
import java.awt.BorderLayout;
public class Tela extends JFrame {
private JPanel contentPane;
private JTextField metaEmp;
private JTextField totalEmp;
private JTextField qtdeTb_1;
private JTextField tempTb_1;
private JTextField valorTb_1;
private JTextField totalTb_1;
private JTextField qtdeTb_2;
private JTextField tempTb_2;
private JTextField valorTb_2;
private JTextField totalTb_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Tela frame = new Tela();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Tela() {
setBackground(new Color(0, 0, 128));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 629, 387);
contentPane = new JPanel();
contentPane.setBackground(Color.CYAN);
contentPane.setForeground(Color.BLACK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JLabel lblMetaDaEmpresa = new JLabel("META DA EMPRESA :");
lblMetaDaEmpresa.setFont(new Font("Tahoma", Font.PLAIN, 18));
metaEmp = new JTextField();
metaEmp.setColumns(10);
final JProgressBar progressBar = new JProgressBar();
progressBar.setForeground(new Color(0, 255, 255));
progressBar.setBackground(new Color(0, 0, 255));
JLabel lblTotalDaEmpresa = new JLabel("Total da Empresa:");
totalEmp = new JTextField();
totalEmp.setEditable(false);
totalEmp.setColumns(10);
JLabel lblTb = new JLabel("TB 1");
lblTb.setIcon(new ImageIcon(Tela.class.getResource("/img/images.png")));
JLabel lblTb_1 = new JLabel("TB 2");
lblTb_1.setIcon(new ImageIcon(Tela.class.getResource("/img/images.png")));
JLabel lblQtde = new JLabel("Qtde:");
JLabel lblTempo = new JLabel("Tempo:");
JLabel lblValor = new JLabel("Valor:");
qtdeTb_1 = new JTextField();
qtdeTb_1.setColumns(10);
tempTb_1 = new JTextField();
tempTb_1.setColumns(10);
valorTb_1 = new JTextField();
valorTb_1.setColumns(10);
totalTb_1 = new JTextField();
totalTb_1.setEditable(false);
totalTb_1.setColumns(10);
JLabel lblTotal = new JLabel("Total:");
JLabel label = new JLabel("Qtde:");
JLabel lblTempo_1 = new JLabel("Tempo:");
JLabel lblValor_1 = new JLabel("Valor:");
JLabel lblTotal_1 = new JLabel("Total:");
qtdeTb_2 = new JTextField();
qtdeTb_2.setColumns(10);
tempTb_2 = new JTextField();
tempTb_2.setColumns(10);
valorTb_2 = new JTextField();
valorTb_2.setColumns(10);
totalTb_2 = new JTextField();
totalTb_2.setEditable(false);
totalTb_2.setColumns(10);
JButton btnIniciar = new JButton("INICIAR \r\nPRODU\u00C7\u00C3O");
btnIniciar.setIcon(new ImageIcon(Tela.class.getResource("/img/play.png")));
btnIniciar.setFont(new Font("Tahoma", Font.PLAIN, 16));
btnIniciar.setToolTipText("");
GroupLayout gl_contentPane = new GroupLayout(contentPane);
btnIniciar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
double valorTb1 = Double.parseDouble(valorTb_1.getText());
int qtdeTb1 = Integer.parseInt(qtdeTb_1.getText());
int tempTb1 = Integer.parseInt(tempTb_1.getText());
double valorTb2 = Double.parseDouble(valorTb_2.getText());
int qtdeTb2 = Integer.parseInt(qtdeTb_2.getText());
int tempTb2 = Integer.parseInt(tempTb_2.getText());
Trabalhador trab1 = new Trabalhador(qtdeTb1, tempTb1, valorTb1, valorTb2, progressBar, metaEmp, totalEmp);
Trabalhador trab2 = new Trabalhador(qtdeTb2, tempTb2, valorTb2, valorTb2, progressBar, metaEmp, totalEmp);
trab1.start();
trab2.start();
}catch(Exception e){
}
}
});
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblTotalDaEmpresa)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(totalEmp, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addComponent(progressBar, GroupLayout.DEFAULT_SIZE, 578, Short.MAX_VALUE)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblMetaDaEmpresa)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(metaEmp, GroupLayout.PREFERRED_SIZE, 234, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(lblTb)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING, false)
.addComponent(lblValor, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblQtde, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblTempo, Alignment.LEADING))
.addGap(18)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(valorTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(tempTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(qtdeTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))))
.addGap(65)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblValor_1, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(valorTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblTempo_1, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(tempTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(label, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(qtdeTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addComponent(lblTb_1, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(btnIniciar, GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)))
.addGap(15))
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblTotal, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(totalTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 191, GroupLayout.PREFERRED_SIZE))
.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
.addGap(205)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblTotal_1, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(totalTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))))
.addContainerGap(262, Short.MAX_VALUE))))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING, false)
.addComponent(metaEmp, Alignment.LEADING, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblMetaDaEmpresa, Alignment.LEADING))
.addGap(18)
.addComponent(progressBar, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(18)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTotalDaEmpresa)
.addComponent(totalEmp, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTb_1, GroupLayout.PREFERRED_SIZE, 40, GroupLayout.PREFERRED_SIZE)
.addComponent(lblTb, GroupLayout.PREFERRED_SIZE, 40, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblQtde)
.addComponent(qtdeTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label)
.addComponent(qtdeTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTempo)
.addComponent(tempTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblTempo_1)
.addComponent(tempTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblValor)
.addComponent(valorTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblValor_1)
.addComponent(valorTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(65)
.addComponent(btnIniciar, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)))
.addGap(30)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTotal)
.addComponent(totalTb_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblTotal_1)
.addComponent(totalTb_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(23))
);
contentPane.setLayout(gl_contentPane);
}
}