PDA

Visualizza la versione completa : cambio colore sfondo


kip
01-07-2011, 19:56
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();
}

}

Loading