Olá pessoal, sou novo por aqui, estou aprendendo um pouco sobre Java, a princípio minha área de interesse é construir Applets para ser usado em explicações didáticas…
Sou desenvolver em outras linguagens, estou estudando Java como auto-ditada, encontrei alguns materiais para estudos, do qual já estou conseguindo fazer algumas coisas…
Enfim, estou tentando desenvolver algumas aplicações que envolvem o estudo sobre EletroMagnetismo, este é um dos códigos que adaptei, no caso seria para simular uma propagação de ondas…
Este é o Código…
import java.applet.*;
import java.awt.*;
public class ExemploOndas extends Applet implements Runnable {
int width, height;
int i = 0;
int x1 = 0;
int y1 = 0;
int x2 = 100;
int y2 = 10;
Thread t = null;
boolean threadSuspended;
//Executado quando a Applet é Criado
public void init() {
width = getSize().width;
height = getSize().height;
setBackground( Color.black );
}
//Executado depois que a Applet é criada, e também quando o Browser Retornar a Página Contendo a Applet
public void start() {
if ( t == null ) {
t = new Thread( this );
threadSuspended = false;
t.start();
}
else {
if ( threadSuspended ) {
threadSuspended = false;
synchronized( this ) {
notify();
}
}
}
}
//Executado sempre que o navegador deixa a página que contém a Applet
public void stop() {
threadSuspended = true;
}
//Executado juntamente quando a Applet é criada e posta em Loop Infinito
public void run() {
try {
while( true ) {
//Enquanto a Thead faz algum Trabalho ( Movimento )
++i; //Incrementa 1 em i
if ( i == 10 ) {
i = 0;
}
//x1 = x1 + 10; //Incrementa x1 1 em x1, para deslocamente da Coluna Inicial
y1 = y1 + 20;
x2 = x2 + 100;
y2 = y2 + 10;
if (y1 == 800 ) {
y1 = 20;
x2 = 100;
y2 = 10;
}
showStatus( "Executado: - Valor de y2 : " + y2);
//Executa a Thread e faz a verificação se deve ser suspenso
if ( threadSuspended ) {
synchronized( this ) {
while ( threadSuspended ) {
wait();
}
}
}
//Redesenha a Applet
repaint();
t.sleep( 500 ); //Intervalo dado em MiliSegundo
}
}
catch ( InterruptedException e ) { }
}
//Executado sempre que a Applet é chamada para ser Redesenhada
public void paint( Graphics g ) {
g.setColor( Color.blue);
//g.drawLine( width, height, i * width / 10, 0); //Desenha Linha
//g.fillArc( 120, 70, y2, y2, 0, 360); //Desenha Circulo, ou Elipse com preenchimento
//g.fillOval( 120, 70, y2, y2 ); //Desenha Circulo com Preenchimento
g.drawOval( 120, 70, y2, y2 ); //Desenha Círculo Sem Preenchimento
}
}
Neste caso, o circulo se expande, porém fica somente o último, gostaria que ficasse de forma progressiva, ou seja, o primeiro circulo se expande, em seguida surge outro, e assim sucessivamente, dando a idéia do movimento de progagação de ondas…
Alguém poderia dar uma dica de como posso resolver isto dentro desta estrutura?
Obrigado pela atenção,
José Aparecido