venerdì 23 gennaio 2009

Correzzione Verifica 19/01/2009

La verifica chiedeva le seguenti istruzioni:
Creare una finestra(pannello) dove doveva essere creato un rettangolo di dimensioni a scelta.
Fare il programma in modo da poter disegnare tramite il mouse una linea o segmento; quando l linea interseca da lato a lato opposto il rettangolo, quest'ultimo doveva cambiare colore in modo casuale.

Ecco la corretta esecuzione del programma:


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class TracciaRettangolo1 {

private JFrame f= new JFrame("Traccia linea rettangolo1");
private Pannello p=new Pannello();
private Point sPoint=new Point();
private Point ePoint=new Point();
int x0=100;
int y0=150;
int w=100;
int h=150;
private boolean intersecato=false;

public TracciaRettangolo1(){

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(450,450);
f.add(p);
f.setVisible(true);
f.addMouseListener(new Linea());
f.addMouseMotionListener(new Linea1());
}

public class Pannello extends JPanel{
public void paintComponent(Graphics g){
if (intersecato==false) {
g.setColor(Color.red);
}
else {
g.setColor(getColor());
}
g.fillRect(x0,y0,w,h);
g.drawLine(sPoint.x,sPoint.y,ePoint.x,ePoint.y);
}
}

public Color getColor(){

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

public void interseca() {

intersecato=false;
if ((sPoint.xx0+w)&&(sPoint.y>y0)&&(sPoint.yy0)&&(ePoint.yinizio linea
public void mouseReleased(MouseEvent e) {

ePoint.x=e.getX()-9;
ePoint.y=e.getY()-34;
interseca();
f.repaint();
}

}

public class Linea1 implements MouseMotionListener{

public void mouseMoved(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {
intersecato=false;
ePoint.x=e.getX()-9;
ePoint.y=e.getY()-34;
f.repaint();
}
}
public static void main(String[] args){
TracciaRettangolo1 t=new TracciaRettangolo1();
}

}


Ecco come dovrebbe essere al momento della compilazione:








Poi quando la retta interseca il rettangolo, questo cambia colore:





giovedì 15 gennaio 2009

Coordinate Punto in una Finestra

Questo programmino fatto in classe serve a determinare le coordiate, X e Y, di dove si stà cliccando in quel momento con il mouse nella finestra creata.


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;



public class TestaInputMouse{


private JFrame f=new JFrame("coordinate punto cliccato");
private Pannello p=new Pannello();
private Point clickx=new Point();
private Point clicky=new Point();


public TestaInputMouse(){


f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(600,600);
f.add(p);
f.addMouseListener(new Coordinate());
f.addMouseMotionListener(new Coordinate1());
f.setVisible(true);
}


public class Pannello extends JPanel{


public void paintComponent(Graphics g){


String tizio="mouse cliccato"+clickx+","+clicky;
g.drawString(tizio,10,20);
f.repaint();
}


}
public static void main(String[] args){
TestaInputMouse t=new TestaInputMouse();
}


public class Coordinate implements MouseListener{
public void mousePressed(MouseEvent e){
clickx.x=e.getX();
}


public void mouseReleased(MouseEvent e){
clicky.y=e.getY();
f.repaint();
}


public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}


public class Coordinate1 implements MouseMotionListener{
public void mouseDragged(MouseEvent e){
clickx.x=e.getX();
clicky.y=e.getY();
f.repaint();
}


public void mouseMoved(MouseEvent e){}
}



}




Ecco come dovrebbe essere una volta compilato!!!




In questa immagine si può vedere che il punto in cui si stà cliccando con il mouse!
Invece,come si può meglio notare nell'immagine seguente, le coordinate di tale punto sono riportate in alto a sinistra della nostra finestra!
Queste sono le coordinate del punto cliccato viste più in dettaglio:







mercoledì 31 dicembre 2008

Auguri di Un buon 2009 a Tutti!!!

Questo è un piccolo esercizio come ripasso di quello che è stato fatto da poco con l'intento di augurare un felice anno nuovo a tutti.
Freghi auguri a tutti!!!



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

public class AnnoNuovo{
int rotation=0;
int giro;
private Polygon poly;
private Polygon poly2;
private JFrame anno;
private PannelloAnno 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[] zpoints={0,-5,-14,-6,-9,0,9,6,14,5};
private int[] jpoints={-14,-5,-2,2,13,7,13,2,-2,-5};

private int editX;
public AnnoNuovo(){
anno=new JFrame("Auguri di Buon Anno a tutti!!!");
anno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
anno.setSize(600,600);
a=new PannelloAnno();
accende=new JButton("attiva animazione");
spegne=new JButton("disattiva animazione");
pannelloBottoni.add(accende);
pannelloBottoni.add(spegne);
anno.add(a,BorderLayout.CENTER);
anno.add(pannelloBottoni,BorderLayout.SOUTH);
accende.addActionListener(new BottoneAccende());
spegne.addActionListener(new BottoneSpegne());
anno.setVisible(true);
}

public class PannelloAnno extends JPanel{
public void paintComponent(Graphics g){
Graphics2D g2d=(Graphics2D) g;
Image annoImmagine=new ImageIcon("anno 2009.gif").getImage();
g.drawImage(annoImmagine,0,0,anno.getWidth(),anno.getHeight(),null);


g.setColor(getColore());
g.fillOval(245,355,18,18);//TAPPO SPUMANTE
g.setColor(getColore());
g.fillOval(100,465,18,18); //SPUMANTE
g.setColor(getColore());
g.fillOval(220,150,18,18); //artificio1
g.setColor(getColore());
g.fillOval(295,220,18,18); //OROLOGIO
g.setColor(getColore());
g.fillOval(370,220,18,18); //artificio2
g.setColor(getColore());
g.fillOval(430,200,18,18); //artificio3
g.setColor(getColore());
g.fillOval(515,133,18,18); //artificio4
g.setColor(getColore());
g.fillOval(335,100,18,18); //artificio5
g.setColor(getColore());
g.fillOval(562,312,10,10); //torre



poly=new Polygon(xpoints,ypoints,xpoints.length);
poly2=new Polygon(zpoints,jpoints,zpoints.length);
int ampiezza=getSize().width;
int altezza=getSize().height;

g2d.setColor(Color.RED);
g2d.drawString("BUON ANNO!!!",((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.fill(poly2);
g2d.setColor(Color.BLUE);
g2d.draw(poly);
g2d.draw(poly2);

}
}
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++;
anno.repaint();

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




Ecco a voi il programmino in funzione:



mercoledì 24 dicembre 2008

AUGURI DI BUON NATALE A TUTTI!!!!

Salve prof. auguri di buon natale e felice anno nuovo!!!
Saluti da Baldassarri!!!

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:


venerdì 12 dicembre 2008

Esercizio per il 12/12/2008

Ecco l'esercizio datoci dal professore per stamattina...devo dire che mi è rimasto un pò difficile ma prendendo spunto dalle soluzioni date dai miei compagni ho compreso il corretto procedimento!!!




venerdì 5 dicembre 2008

Grafica JAVA 2°intervento



Salve a tutti...nn ho proprio voglia di fare nnt come al solito ma oggi in classe, dopo una lunga spiegazione dell'interfaccia delle classi astratte, abbiamo fatto nuove cose con la ormai nota programmazione ad oggetti.
Siccome mi ha colpito l'esercizio fatto in classe ho deciso di ripassarlo e anche ampliarlo se pur in maniera modesta, e quindi riproporlo a chiunque volesse consultarlo.
Ecco cosa si è fatto: ho dato sia una implementazione semplice, sia una un pò più complicata, entramb con l'aggiunta della sottrazione, oltre che alla somma già fatta in classe.


PIù SEMPLICE:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Finestra4 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("+");
JButton b2=new JButton("-");
JTextField risultato=new JTextField();
JTextField risultato2=new JTextField();
public void creaForm1(){
JFrame finestra1=new JFrame("finestra2 somma-sottrazione Baldassarri");
finestra1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra1.setSize(600,600);
finestra1.setLayout(new GridLayout(6,3));
finestra1.add(l1);
finestra1.add(t1);
finestra1.add(l2);
finestra1.add(t2);
finestra1.add(b1);
finestra1.add(b2);
finestra1.add(risultato);
finestra1.add(risultato2);
b1.addActionListener(this);
b2.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);

int sottrazione=a-b;
String r2=Integer.toString(sottrazione);
risultato2.setText(r2);
}

}


IL RISULTATO CHE AVRETE SARà QUESTO:








UN Pò PIù COMPLESSO:


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Finestra3 implements ActionListener{
JLabel l1=new JLabel("primo n-somma");
JLabel l2=new JLabel("secondo n-somma");
JLabel l3=new JLabel("primo n-sottrazione");
JLabel l4=new JLabel("secondo n-sottrazione");
JTextField t1=new JTextField();
JTextField t2=new JTextField();
JTextField t3=new JTextField();
JTextField t4=new JTextField();
JButton b1=new JButton("+");
JButton b2=new JButton("-");
JTextField risultato=new JTextField();
JTextField risultato2=new JTextField();
public void creaForm1(){
JFrame finestra1=new JFrame("finestra somma-sottrazione Baldassarri");
finestra1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra1.setSize(600,600);
finestra1.setLayout(new GridLayout(6,3));
finestra1.add(l1);
finestra1.add(t1);
finestra1.add(l2);
finestra1.add(t2);
finestra1.add(l3);
finestra1.add(t3);
finestra1.add(l4);
finestra1.add(t4);
finestra1.add(b1);
finestra1.add(b2);
finestra1.add(risultato);
finestra1.add(risultato2);
b1.addActionListener(this);
b2.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);


String testo3=t3.getText();
String testo4=t4.getText();
int c=Integer.parseInt(testo3);
int d=Integer.parseInt(testo4);
int sottrazione=c-d;
String r2=Integer.toString(sottrazione);
risultato2.setText(r2);
}

}



IL RISULTATO CHE AVRETE SARà QUESTO:




----Ovviamente tutte queste istruzioni non funzioneranno mai da sole perchè nn è presente una main!!!!! Quindi avrete bisogno di un'altro file.java per eseguirlo.

basta solo cambiare il nome della classe a seconda del nome che avete dato sull'altro file dove sono presenti tutte le istrizioni (ad esempio: Finestra3.java ; TestaFinestra3.java)

public class TestaFinestra3{
public static void main(String[] args){
Finestra3 f=new Finestra3();
f.creaForm1();
}
}


Dopo questa lunga spiegazione io direi di chiudere......ALLA PROSSIMA CON NUOVI AGGIORNAMENTI!!!!!