martedì 16 dicembre 2008

Albero di Natale (verde=spiegazione passaggi)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class AlberoNatale {
private JFrame albero; //JFrame crea la finestra
private PannelloAlbero a;
private JButton accende;
private JButton spegne; //creo i 2 bottoni...accende e spegne sono i nomi
private JPanel pannelloBottoni=new JPanel(new GridLayout(2,1));
private java.util.Timer pallineAccese;
public AlberoNatale() {
albero=new JFrame("Albero del S. Natale 2008");
albero.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //serve una volta chiusa la finestra a chiudere il programma
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); //servono per aggiungere i bottoni
albero.add(pannelloBottoni,BorderLayout.SOUTH);
accende.addActionListener(new BottoneAccende());
spegne.addActionListener(new BottoneSpegne());
albero.setVisible(true);
}

public class PannelloAlbero extends JPanel { /*faccio una classe interna*/
public void paintComponent(Graphics g) {
Graphics g2D=(Graphics2D) g;
Image alberoImmagine=new ImageIcon("Albero di Natale.jpg").getImage(); //x mettere immagine
g.drawImage(alberoImmagine,0,0,albero.getWidth(),albero.getHeight(),null); //0,0 stà per l'origine
//getWidth e getHeight servono per adattare l'immagine allo schermo
g.setColor(getColore());
g.fillOval(250,100,30,30);
g.setColor(getColore());
g.fillOval(200,150,30,30);
g.setColor(getColore());
g.fillOval(200,100,30,30);
g.setColor(getColore());
g.fillOval(200,200,30,30);
g.setColor(getColore());
g.fillOval(250,300,30,30); //creo le palline
}
}
private Color getColore () {
int verde=(int) (Math.random()*255);
int rosso=(int) (Math.random()*255);
int blu=(int) (Math.random()*255); //vengono definiti i colori
Color colore=new Color(verde,rosso,blu);
return colore;
} //classe per accendere le palline
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); //500 sono millisecondi di intervallo
}
} //classe per spengere le palline
public class BottoneSpegne implements ActionListener{
public void actionPerformed(ActionEvent event) {
pallineAccese.cancel();
}
}
public static void main(String[] args) {
AlberoNatale albero=new AlberoNatale();
}
}

Scelta una immagine da usare come riferimento:

Eseguendo il programma, otterremo una finestra del tipo:

Ovviamente premendo sui bottoni, le palline dell'albero si comporteranno di conseguenza...

sabato 13 dicembre 2008

Finestra cambio colore casuale (verde=spiegazione)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Grafica1 implements ActionListener {
private JFrame f; //finestra principale
private Pannello1 p; //pannello
private JButton b1; //bottone e il relativo nome
public Grafica1(){
f=new JFrame("prova pannello"); //creo il JFrame
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*dimensioni*/f.setSize(300,300);
b1= new JButton("cambia colore in modo casuale");
b1.addActionListener(this);
f.setLayout(new GridLayout(2,1));
p=new Pannello1();
f.add(b1);
f.add(p);
f.setVisible(true);
}
public class Pannello1 extends JPanel {
public void paintComponent(Graphics g) {
Graphics2D g2D=(Graphics2D) g;
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);
g2D.setColor(colore);
g2D.fillOval(0,0,70,70); /*che riempe l'ovale*/
} //chiuso metodo
} //chiuso classe
public static void main(String[] args){
Grafica1 g1= new Grafica1(); //eseguo il metodo costruttore
}
}

Il risultato finale sarà una finestra di questo tipo e premendo il bottone, per l'appunto, si cambia il colore della finestra in modo casuale:


martedì 9 dicembre 2008

Creazione calcolatrice

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Finestra2 implements ActionListener{
JLabel l1=new JLabel("primo numero");
JLabel l2=new JLabel("secondo numero");
JTextField t1=new JTextField();
JTextField t2=new JTextField();
JButton b1=new JButton("+");
JTextField risultato=new JTextField();
public void creaForm1(){
JFrame finestra1=new JFrame ("finestra IVL");
finestra1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra1.setSize(300,300);
finestra1.setLayout(new GridLayout(3,2));
finestra1.add(l1);
finestra1.add(t1);
finestra1.add(l2);
finestra1.add(t2);
finestra1.add(b1);
finestra1.add(risultato);
b1.addActionListener(this);
finestra1.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
String testo1=t1.getText();
String testo2=t2.getText();
int a=Integer.parseInt(testo1);
int b=Integer.parseInt(testo2);
int somma=a+b;
String r=Integer.toString(somma);
risultato.setText(r);
}
}
Poi occorrerà una main per la creazione di oggetti Finestra2:
public class TestaFinestra { public static void main(String[] args) {
Finestra2 f=new Finestra2();
f.creaForm1();
}
}

Mandandolo in esecuzione, otterremo una finestra che eseguirà l'addizione tra 2 numeri:

lunedì 1 dicembre 2008

Es rotazione poligono (rotazione tramite mouse)







import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
import java.awt.geom.*;
public class RotazionePoligono extends Applet implements MouseListener, KeyListener{
private int[] xpoints={0,-10,-7,7,10};
private int[] ypoints={-10,-2,10,10,-2};
private Polygon poly;

int rotation=0;
public void init(){
poly=new Polygon (xpoints,ypoints,xpoints.length);
addMouseListener(this);
addKeyListener(this);
}
public void paint (Graphics g){
Graphics2D g2D=(Graphics2D) g;
int ampiezza=getSize().width;
int altezza=getSize().height;
g2D.setColor(Color.BLACK);
g2D.fillRect(0,0,ampiezza,altezza);
g2D.translate(ampiezza/2,altezza/2);
g2D.scale(20,20);
g2D.rotate(Math.toRadians(rotation));
g2D.setColor(Color.RED);
g2D.draw(poly);
g2D.setColor(Color.BLACK);
g2D.fill(poly);
}
public void mouseEntered(MouseEvent m){}
public void mouseExited(MouseEvent m){}
public void mouseReleased(MouseEvent m){}
public void mouseClicked(MouseEvent m){}
public void mousePressed(MouseEvent m){
switch (m.getButton()){
case MouseEvent.BUTTON1:
rotation--;
if (rotation<0) rotation=359;
repaint();
break;
case MouseEvent.BUTTON3:
rotation++;
if (rotation>360) rotation=0;
repaint();
break;
}
}
public void keyReleased(KeyEvent k){}
public void keyTyped(KeyEvent k){}
public void keyPressed(KeyEvent k){
switch (k.getKeyCode()){
case KeyEvent.VK_LEFT:
rotation--;
if (rotation<0) rotation=359;
repaint();
break;
case KeyEvent.VK_RIGHT:
rotation++;
if (rotation>360) rotation=0;
repaint();
break;
}
}
}