У меня есть этот код,Как метод repaint() ведет себя в бесконечном цикле?
import java.awt.*;
import java.applet.*;
public class FirstApplet extends Applet
{
int len;
char ch;
String msg="Hello World ";
public void init()
{
setBackground(Color.CYAN);
setForeground(Color.WHITE);
}
public void start()
{
System.out.println("Inside Start");
repaint();
}
public void paint(Graphics g)
{
System.out.println("Inside paint");
g.drawString(msg,200,200);
}
}
Он выводит CYAN цветной фон с Hello World на it.And на консоли (CMD), он outputs-
внутри Запустить
внутри краска
Теперь, если я изменить код this-
import java.awt.*;
import java.applet.*;
public class FirstApplet extends Applet
{
String msg="Hello World ";
int len;
char ch;
public void init()
{
setBackground(Color.CYAN);
setForeground(Color.WHITE);
}
public void start()
{
System.out.println("Inside Start");
for(;;)
{
repaint();
}
}
public void paint(Graphics g)
{
System.out.println("Inside paint");
g.drawString(msg,200,200);
}
}
Он выводит белый цветной экран без текста на нем, и на консоли это просто outputs-
Inside Start
Я не могу понять, выход второй программы, Хотя я все время призываю repaint() внутри цикла for, почему цвет окна апплета не меняется на цвет CYAN и почему его не печатает «Inside paint» на консоли? Может кто-нибудь, пожалуйста, помогите мне.
@ СВП-я знаю, что могу преодолеть это нить, потому что я не читал Качели yet.But Что причина, что перекрашивать () не выполняется. Извините, я вас не понял. Не могли бы вы рассказать о своей точке. Спасибо –
@RajMalhotra: вы ошибаетесь. 'repaint()' вызывается и выполняется, но менеджер красок не может действуйте по этому поводу, потому что он делает это в потоке событий GUI. Если поток событий GUI привязан, никакая покраска не может быть выполнена, чистая и простая. –
@RajMalhotra: см. Править для ответа. –