Java - refrescar jlabel

 
Vista:

refrescar jlabel

Publicado por Agustin (1 intervención) el 18/09/2016 10:15:48
Hola, un saludo a todos.
Soy principiante en Java y no consigo refrescar un JLabel.setText situado dentro de un bucle for.
Me explico. Cuando hago click en un boton comienza un bucle a contar hasta 10000 y en cada iteracion le paso el valor a la propiedad text de JLabel, el problema es que no se refresca, solo veo el 10000 cuando acaba el evento click del boton.

1
2
3
4
5
6
private void btnComenzarActionPerformed(java.awt.event.ActionEvent evt) {
 
        for (Integer i=0;i<10000;i++) {
            this.JLabel1.setText(i.toString());
 
        }
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

refrescar jlabel

Publicado por Rodri (1 intervención) el 18/09/2016 13:30:18
Primero de todo, no tienes condiciones de salto de linea, es decir, ¿como sabe el programa que el numero 2 tiene que colocarlo debajo del 1? Por algun lado tienes que tener algo como this.JLabel.setText("\r\n"); que es un salto de linea, pero aun así no creo que funcione bien porque tampoco hay condiciones de refresco. Lo mejor para hacer lo que quieres es con un Jlist, usando el constructor DefaultListModel para poder actualizar en tiempo de ejecucion.
Saludos :)
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

refrescar jlabel

Publicado por Agustin (1 intervención) el 18/09/2016 13:40:15
Gracias por tu respuesta. Quizás no me he explicado bien.
Lo que necesito es visualizar en el label el valor de I en cada momento.
Desde 0 hasta 9999 y solo veo el 9999. Aunque haga un label.repaint ().
Vemgo VB.NET y haciendo label.refresc funcionaba.
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

refrescar jlabel

Publicado por gambas (1 intervención) el 21/09/2016 01:51:50
Espero que te sirva este ejemplo.
Saludos.

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
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.EventQueue.*;
 
public class Nuevo extends JFrame {
   public Nuevo() {
       super("Hola Mundo");
       Container con = getContentPane();
       con.setLayout(new GridLayout(2,1));
       cuenta = new JLabel("Cuenta");
       barra = new JProgressBar();
       barra.setMinimum(0);
       barra.setMaximum(100);
       barra.setStringPainted(true);
       boton = new JButton("Inicia");
       boton.addActionListener(e->{
	       boton.setEnabled(false);
	       Thread t1 = new Thread(Nuevo::iniciaBarra);
	       t1.start();
 
	   });
       con.add(cuenta);
       con.add(barra);
       con.add(boton);
       setSize(400,80);
       setLocationRelativeTo(null);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       }
      public static void main(String... args) {
	  EventQueue.invokeLater(()->{
		  new Nuevo().setVisible(true);
	      });
      }
 
    public static void iniciaBarra() {
	for (int i = 0; i < 100; i++) {
	    try {
		barra.setValue(i);
		cuenta.setText(String.valueOf(i));
		cuenta.setForeground(new Color(0 , 0 , 145));
		if(i == 99) {
		    Thread.interrupted();
		    cuenta.setText("0");
		    barra.setValue(0);
		    boton.setEnabled(true);
		    System.out.printf("%s%n" , "Hilo terminado");
		}
		Thread.sleep(100);
	    } catch(InterruptedException e) {
		System.out.printf("%s%n",e.getLocalizedMessage());
	    }
	}
    }
    private static JLabel cuenta;
    private static JProgressBar barra;
    private static JButton boton;
}
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