ho realizzato questo programma dove c'è una pallina che ri muove e vorrei che lo sfondo cambiasse colore con il movimento della pallina. lo sfondo ha i parametri RGB dove r è la coordinata x, G la y e B un parametro a caso. però quando la pallina si muove lo sfondo rimane bianco. dove ho sbagliato?
import java.awt.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.*;
public class PallinaRimbalzante extends JPanel implements ActionListener,ChangeListener{
private static final long serialVersionUID = 1L;
static JButton start,stop;
static PallinaRimbalzante p;
static double x,y,y2=400,x1,y1;
static final int raggio=50;
static boolean xpos,ypos,xpos1,ypos1;
static Timer t;
static Color colore;
static JPanel principale;
public static void main(String[] args) {
x=400;
y=400;
xpos=true;
ypos=true;
JFrame f = new JFrame();
f.setSize(800,800);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p =new PallinaRimbalzante();
t = new Timer(1,p);
t.start();
principale = new JPanel();
principale.setLayout(new BorderLayout());
principale.add(p,BorderLayout.CENTER);
f.getContentPane().add(principale);
f.setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 =(Graphics2D)g;
Shape pallina = new Ellipse2D.Double(x,y,raggio,raggio);
//colore=new Color((int)x,(int)y,100);
g2.setColor(Color.RED);
g2.fill(pallina);
}
public void actionPerformed(ActionEvent e) {
if(xpos){
if(x+raggio<p.getWidth()){
x++;
}else{
x--;
xpos=false;
}
} else {
if(x>0){
x--;
}else{
x++;
xpos=true;
}
}
if(ypos){
if(y+raggio<p.getHeight()){
y=y+2;
}else{
y--;
ypos=false;
}
} else {
if(y>0){
y--;
}else{
y++;
ypos=true;
}
}
/*colore = new Color((int)x,(int)y,100);
principale.setBackground(colore);*/
p.repaint();
}
public void stateChanged(ChangeEvent arg0) {
colore = new Color((int)x,(int)y,0);
principale.setBackground(colore);
this.repaint();
}
}