martedì 16 dicembre 2008

ALBERO DI NATALE

LUCI SPENTE:

LUCI ACCESE:


Codice:

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 int on_off=0;
  private java.util.Timer pallineAccese;
  public AlberoNatale(){
  albero=new JFrame("Albero Natale 2008");
  albero.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  albero.setSize(500,500);
  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("albero.jpg").getImage();
  g.drawImage(alberoImmagine,0,0,albero.getWidth(),albero.getHeight(),null);
  //prima fila
  g.setColor(getColore());
  g.fillOval(250,350,25,25);
  g.setColor(getColore());
  g.fillOval(250,300,25,25);
  g.setColor(getColore());
  g.fillOval(250,250,25,25);
  g.setColor(getColore());
  g.fillOval(250,200,25,25);
  g.setColor(getColore());
  g.fillOval(250,150,25,25);
  g.setColor(getColore());
  g.fillOval(250,100,25,25);
  g.setColor(getColore());
  g.fillOval(250,60,25,25);
  //seconda fila
  g.setColor(getColore());
  g.fillOval(200,350,25,25);
  g.setColor(getColore());
  g.fillOval(200,300,25,25);
  g.setColor(getColore());
  g.fillOval(200,250,25,25);
  g.setColor(getColore());
  g.fillOval(200,200,25,25);
  g.setColor(getColore());
  g.fillOval(200,150,25,25);
  g.setColor(getColore());
  g.fillOval(200,100,25,25);
   
  //tersa fila
  g.setColor(getColore());
  g.fillOval(150,350,25,25);
  g.setColor(getColore());
  g.fillOval(150,300,25,25);
  g.setColor(getColore());
  g.fillOval(150,250,25,25);
  g.setColor(getColore());
  g.fillOval(150,200,25,25);
   
  //quarta fila
  g.setColor(getColore());
  g.fillOval(100,350,25,25);
  g.setColor(getColore());
  g.fillOval(100,300,25,25);

  //quinta fila
  g.setColor(getColore());
  g.fillOval(300,350,25,25);
  g.setColor(getColore());
  g.fillOval(300,300,25,25);
  g.setColor(getColore());
  g.fillOval(300,250,25,25);
  g.setColor(getColore());
  g.fillOval(300,200,25,25);
  g.setColor(getColore());
  g.fillOval(300,150,25,25);
  g.setColor(getColore());
  g.fillOval(300,100,25,25);
   
  //tersa fila
  g.setColor(getColore());
  g.fillOval(350,350,25,25);
  g.setColor(getColore());
  g.fillOval(350,300,25,25);
  g.setColor(getColore());
  g.fillOval(350,250,25,25);

   
  //quarta fila
  g.setColor(getColore());
  g.fillOval(400,350,25,25);
  g.setColor(getColore());
  g.fillOval(400,300,25,25);


   

  }
  }
  private Color getColore(){
  if(on_off==1){
  int verde=(int)(Math.random()*225);
  int rosso=(int)(Math.random()*225);
  int blu=(int)(Math.random()*225);
  Color colore=new Color(rosso,blu,verde);
  return colore; 
  }
  else
  {
  Color colore=new Color(0,0,0);
  return colore;  
  }
  }
   
  public class BottoneAccende implements ActionListener{
   
  public void actionPerformed(ActionEvent event){
  if (on_off==0){
  on_off=1;
  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){
  on_off=0;
  pallineAccese.cancel();
  albero.repaint();
  }
  }
  public static void main(String[] args){
  AlberoNatale albero=new AlberoNatale();
  }
}