quiero hacer una barra de progreso con hilos
Publicado por william martinez (1 intervención) el 28/11/2021 09:05:41
necesito informacion sobre esto
Valora esta pregunta


0
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
public class BarraProgreso extends JFrame {
private JProgressBar barra;
private JButton btMenos;
private JButton btMas;
private HiloBarra hiloBarra;
public BarraProgreso() {
barra = new JProgressBar();
barra.setMaximum(100);
barra.setMinimum(0);
barra.setValue(50);
btMenos = new JButton("Disminuye");
btMenos.addActionListener(new AccionBotones());
btMas = new JButton("Aumenta");
btMas.addActionListener(new AccionBotones());
hiloBarra = new HiloBarra();
JPanel pnBarra = new JPanel();
pnBarra.add(barra);
pnBarra.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(30, 40, 30, 40),
BorderFactory.createRaisedSoftBevelBorder()));
JPanel pnBotones = new JPanel();
pnBotones.add(btMenos);
pnBotones.add(btMas);
setLayout(new BorderLayout());
add(pnBarra, BorderLayout.CENTER);
add(pnBotones, BorderLayout.SOUTH);
setTitle("Prueba Barra");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private class HiloBarra extends Thread {
boolean aumentar = true;
@Override
public void run() {
while(true) {
try {
Thread.sleep(100);
if (aumentar)
barra.setValue(barra.getValue() + 1);
else
barra.setValue(barra.getValue() - 1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private class AccionBotones implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (!hiloBarra.isAlive())//Si no está "vivo"..
hiloBarra.start();//..lo iniciamos
JButton btActivado = (JButton)e.getSource();
if (btActivado.equals(btMas))
hiloBarra.aumentar = true;
else
hiloBarra.aumentar = false;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new BarraProgreso();
}
});
}
}