mercoledì 24 dicembre 2008

Prova albero di natale

Salve a tutti è da un pò che non seguo il mio blog... ma rimedio subito.
Ho postato l'esercizio eseguito a scuola in JAVA che consisteva di aprire una finestra con dentro una foto e metterci delle palline illuminate che si illuminavano con tutti i colori diversi ad un tempo predefinito (io l'ho messo ogni secondo perchè mi sembrava più realistico...) e due tasti che facevano accendere e spegnere le luci. Ma bando alle ciance questo è il programma:


import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.Polygon;

public class AlberoNatale1{
int rotation=0;
int giro;
private Polygon poly;
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;
private int[] xpoints={0,-3,-10,-4,-7,0,7,4,10,3};
private int[] ypoints={-10,-3,-2,2,10,5,10,2,-2,-3};
private int editX;
public AlberoNatale1(){
albero=new JFrame("Albero del Santo 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){
Graphics2D g2d=(Graphics2D) g;
Image alberoImmagine=new ImageIcon("Christmastree.jpg").getImage();
g.drawImage(alberoImmagine,0,0,albero.getWidth(),albero.getHeight(),null);
g.setColor(getColore());
g.fillOval(200,200,30,30);
g.setColor(getColore());
g.fillOval(200,250,30,30);
g.setColor(getColore());
g.fillOval(150,300,30,30);
poly=new Polygon(xpoints,ypoints,xpoints.length);
int ampiezza=getSize().width;
int altezza=getSize().height;

g2d.setColor(Color.RED);
g2d.drawString("Buon natale by me",((ampiezza/2)-60)+editX,altezza-20);


g2d.translate(ampiezza/2,(altezza/2)-120);
g2d.scale(5,5);
g2d.rotate(Math.toRadians(rotation));
g2d.setColor(Color.YELLOW);
g2d.fill(poly);
g2d.draw(poly);

}
}
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(verde,rosso,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(){
rotation+=2;
editX++;
albero.repaint();

}
});
}
},0,250);
}
}
public class BottoneSpegne implements ActionListener{
public void actionPerformed(ActionEvent event){
pallineAccese.cancel();
}
}
public static void main(String[] args){
AlberoNatale1 albero=new AlberoNatale1();
}
}

Ed ecco il risultato...

Nessun commento: