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: