venerdì 19 dicembre 2008

Albero di Natale con luci multicolore

Eccoci di nuovo ad inserire una nuova esercitazione in questo blog, che ormai stà diventando bello pienotto.
Questo esercizio sempre in java riguarda l'inserimento di un'immagine in una finestra, in uesto caso di un albero di Natale, dove poi verranno inserite delle forme geometriche rotonde che raffigureranno le nostre luci.
Mediante dei pulsanti inseriti nella finestra potremo controllare quando accenderle e qundo spegnerle!!!!
Buon divertimento, Buone Feste e Buon Natale!!!


/*Albero di Natale*/


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class AlberoNatale{
private JFrame albero;
private PannelloAlbero a;
private JButton accende;
private JButton spegne;
private JPanel pannelloBottoni=new JPanel(new GridLayout(2,1));
private java.util.Timer pallineAccese;
public AlberoNatale(){
albero=new JFrame("Albero di Natale 2008");
albero.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
albero.setSize(600,600);
a=new PannelloAlbero();
accende=new JButton("accendi le lampadine");
spegne=new JButton("spegni le lampadine");
pannelloBottoni.add(accende);
pannelloBottoni.add(spegne);
albero.add(a,BorderLayout.CENTER);
albero.add(pannelloBottoni,BorderLayout.SOUTH);
accende.addActionListener(new BottoneAccende());
spegne.addActionListener(new BottoneSpegne());
albero.setVisible(true);
}


public class PannelloAlbero extends JPanel{
public void paintComponent(Graphics g){
Graphics g2d=(Graphics2D) g;
Image alberoImmagine=new ImageIcon("decora.gif").getImage();
g.drawImage(alberoImmagine,0,0,albero.getWidth(),albero.getHeight(),null);


g.setColor(getColore());
g.fillOval(300,100,30,30); // fila centrale
g.setColor(getColore());
g.fillOval(300,200,30,30);
g.setColor(getColore());
g.fillOval(300,300,30,30);
g.setColor(getColore());
g.fillOval(300,400,30,30);
g.setColor(getColore());
g.fillOval(300,500,30,30);

g.setColor(getColore()); //fila sinistra
g.fillOval(250,150,30,30);
g.setColor(getColore());
g.fillOval(250,250,30,30);
g.setColor(getColore());
g.fillOval(250,350,30,30);
g.setColor(getColore());
g.fillOval(250,450,30,30);

g.setColor(getColore()); //fila sinistra
g.fillOval(200,200,30,30);
g.setColor(getColore());
g.fillOval(200,300,30,30);
g.setColor(getColore());
g.fillOval(200,400,30,30);
g.setColor(getColore());
g.fillOval(200,500,30,30);

g.setColor(getColore()); //fila sinistra
g.fillOval(150,250,30,30);
g.setColor(getColore());
g.fillOval(150,350,30,30);
g.setColor(getColore());
g.fillOval(150,450,30,30);

g.setColor(getColore()); //fila sinistra
g.fillOval(100,300,30,30);
g.setColor(getColore());
g.fillOval(100,400,30,30);
g.setColor(getColore());
g.fillOval(100,500,30,30);

g.setColor(getColore()); //fila destra
g.fillOval(350,150,30,30);
g.setColor(getColore());
g.fillOval(350,250,30,30);
g.setColor(getColore());
g.fillOval(350,350,30,30);
g.setColor(getColore());
g.fillOval(350,450,30,30);

g.setColor(getColore()); //fila destra
g.fillOval(400,200,30,30);
g.setColor(getColore());
g.fillOval(400,300,30,30);
g.setColor(getColore());
g.fillOval(400,400,30,30);
g.setColor(getColore());
g.fillOval(400,500,30,30);

g.setColor(getColore()); //fila destra
g.fillOval(450,350,30,30);
g.setColor(getColore());
g.fillOval(450,450,30,30);
g.setColor(getColore());
g.fillOval(450,550,30,30);

g.setColor(getColore()); //cappello babbonatale
g.fillOval(460,3,45,45);

}


}


private Color getColore(){


int verde=(int) (Math.random()*255);
int rosso=(int) (Math.random()*255);
int blu=(int) (Math.random()*255);
Color colore=new Color(rosso,verde,blu);
return colore;
}


public class BottoneAccende implements ActionListener{


public void actionPerformed(ActionEvent event){


pallineAccese=new java.util.Timer();
pallineAccese.schedule(new TimerTask(){
public void run(){


SwingUtilities.invokeLater(new Runnable(){
public void run(){


albero.repaint();
}
});
}
},0,500);
}
}
public class BottoneSpegne implements ActionListener{


public void actionPerformed(ActionEvent event){


pallineAccese.cancel();
}
}
public static void main(String[] args){


AlberoNatale albero=new AlberoNatale();
}
}



Ecco come dovrebbe essere il risultato:


Nessun commento: