
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();
}
}