Почему после завершения цикла for на экране апплета ничего не отображается?

#java #applet #awt #java-2d

#java #апплет #авт #java-2d #awt

Вопрос:

Ниже приведен простой код апплета, проблема в том, что цикл for завершен.

На экране апплета ничего не отображается.

Я предполагаю, что экран очищается после завершения цикла for.

Я не могу это исправить, я хотел бы знать, как предотвратить очистку экрана, чтобы мой вывод отображался на экране.

 public class ColorArcs extends Applet
{
int width=50;
int length=50;

int topx=200-25,topy=200-25;

public void paint(Graphics g)
{
    for(;length<250;)
    {
        g.drawArc(200-length/2,200-width/2,length,width,0,180);

        length =2;
        width  ;

        if(length>=50amp;amp;length<=75)
            setForeground(Color.cyan);
        else
            if(length>=75amp;amp;length<=100)
            setForeground(Color.yellow);
        else
            if(length>=100amp;amp;length<=125)
            setForeground(Color.green);
        else
            setForeground(Color.red);

        try
        {
            Thread.sleep(80);
        }
        catch(InterruptedException ie){}
    }
}
}
  

Комментарии:

1. Апплеты — мертвая технология. современные браузеры даже Java-апплеты больше не поддерживают. Итак, если вы хотите программировать графику на Java, используйте awt, swing или javafx.

Ответ №1:

После завершения цикла for он не очищается.Скриншот программы просмотра апплета и комментарий кода на стороне цикла for

Ответ №2:

Вы устанавливаете передний план после установки дуги, следовательно, он записывается поверх. Вот почему вы ничего не видите.

Ответ №3:

Чтобы сохранить paint, следуйте идее Abhinav. Но чтобы изменить цвет, смотрите приведенный ниже код: (все не исправлено, но вы можете начать с идеи)

 public class ColorArcs extends Applet
{
int width=50;
int length=50;

int topx=200-25,topy=200-25;

public void paint(Graphics g)
{
    for(;length<250;)
    {
        length =2;
        width  ;

        if(length>=50amp;amp;length<=75)
            setForeground(Color.cyan);

    }

    int length_ = 50; width=50;
    for(;length_<250;)
    {
        g.drawArc(200-length_/2,200-width/2,length_,width,0,180);

        length_ =2;
        width  ;

        try
        {
            Thread.sleep(20);
        }
        catch(InterruptedException ie){}
    }
}
}