Que pasa en este programa?
Publicado por Jordi (135 intervenciones) el 07/01/2018 15:26:26
Tengo dos clases, una que extiende de JPanel (Fons significa Fondo):
Y la clase del Main:
Nada del otro mundo, pero la cosa se da dentro del Thread.sleep(); si por cada iteracion del bucle hago que espere un poco aparecen varias lineas en el JPanel mientras que si no pongo espera solo aparece una linea.
Alguien tiene una explicación para esto?
Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.awt.Graphics;
import javax.swing.JPanel;
public class Fons extends JPanel{
@Override
public void paintComponent(Graphics g) {
g.drawLine((int)(Math.random() * 400),
(int)(Math.random() * 400),
(int)(Math.random() * 400),
(int)(Math.random() * 400));
}
}
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
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Fons fons = new Fons();
JFrame finestra = new JFrame();
finestra.setSize(400, 400);
finestra.setLocationRelativeTo(null);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra.add(fons);
finestra.setVisible(true);
for(int i = 0; i < 10; i++) {
fons.repaint();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Alguien tiene una explicación para esto?
Gracias.
Valora esta pregunta
0