import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class figuraInMovimento{
public static Fr f;
public static int q;
public static void main(String[] args){
f=new Fr();
Container c=f.getContentPane(); //recupera il container dalla gerarchia
Pan p=new Pan(); //crera un pannello
c.add(p);
f.setLayout(new GridLayout());
f.setVisible(true);
while(true){
q=(int)f.getWidth()-20;//QUI CONSIDERO LA DIFFERENZA DI 20 PIXEL
if(p.x>=q-50) //50 è la dimensione del diametro del cerchio
p.dir=p.dir*(-1);
if(p.x<=0)
p.dir=p.dir*(-1);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
f.repaint();
}
}
}
class Fr extends JFrame{
public Fr(){
super("figura in movimento");
setBounds(300,300,300,300);
setBackground(Color.blue);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Pan extends JPanel{
int x=1;
int dir=1;
public void paintComponent(Graphics g){//metodo che disegna
int q=figuraInMovimento.q;
g.setColor(Color.red);
g.drawString("dir= "+dir+", x= "+x+"finestra= "+q , 10, 10);
g.drawString("margine sinistro a "+(x+50) , 10, 30);
g.setColor(Color.blue);
g.fillOval(x+dir, 100, 50, 50);//SFERA CHE SI MUOVE, CANCELLAZIONE DELLA POSIZIONE CORRENTRE
g.setColor(Color.red);
g.fillOval(x, 100, 50, 50);//RISCRITTURA IN NUOVA POSIZIONE
x+=dir;
}
}