Java - quiero hacer una barra de progreso con hilos

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

quiero hacer una barra de progreso con hilos

Publicado por Kabuto (1102 intervenciones) el 28/11/2021 20:13:27
Por aquí tengo un código de prueba que escribí hace algún tiempo.

Es una barra con dos botones para aumentar o disminuir. Cuando se pulsa un botón la barra comienza (mediante un hilo) a aumentar o disminuir según el botón pulsado.
En cualquier momento se puede volver a pulsar otro botón y la barra obedecerá la orden dada.

Según lo que tengas pensado hacer, puede que haya que implementarlo de distinta forma a como yo lo he hecho, pero creo que al menos esto te puede servir de inspiración.

Si algo no se entiende, pregunta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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();
			}
		});
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar