lunedì 12 gennaio 2009

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


public class TracciaLinea{
int dVettori[][] = new int[3000][4]; //array a 2 dimensioni
private int cauntLinee;
private JFrame f=new JFrame("Traccia linee rette");
private Pannello p=new Pannello();
private Point sPoint=new Point();
private Point ePoint=new Point();


public TracciaLinea(){
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//serve per l'output: una volta chiusa la finestra, chiude il programma
f.setSize(500,500);
f.add(p);
f.setVisible(true);
f.addMouseListener(new Linea());
f.addMouseMotionListener(new Linea1());
f.setVisible(true);

}

//assegna automaticamente i valori alle linee
private void SetCordinate(int x1, int y1, int x2, int y2){
dVettori[cauntLinee][0]=x1;
dVettori[cauntLinee][1]=y1;
dVettori[cauntLinee][2]=x2;
dVettori[cauntLinee][3]=y2;
cauntLinee++;
if(cauntLinee>(dVettori.length-1)){
cauntLinee=0;
}
}
//permette di visualizzare le vecchie linee
private void paintOldLinee(Graphics g){
for(int i=0; i //visualizza tutta la finestra
public class Pannello extends JPanel{
public void paintComponent(Graphics g){
g.drawLine(sPoint.x,sPoint.y,ePoint.x,ePoint.y);
paintOldLinee(g);
}

}

//serve per fare il movimento del mouse e così della linea
public static void main(String[] args){
TracciaLinea t=new TracciaLinea();
}
public class Linea implements MouseListener{
public void mousePressed(MouseEvent e){
sPoint.x=e.getX()-5;
sPoint.y=e.getY()-24;
}
public void mouseReleased(MouseEvent e){
ePoint.x=e.getX()-5;
ePoint.y=e.getY()-24;
SetCordinate(sPoint.x,sPoint.y,ePoint.x,ePoint.y);
f.repaint();
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
public class Linea1 implements MouseMotionListener{
public void mouseDragged(MouseEvent e){
ePoint.x=e.getX()-5;
ePoint.y=e.getY()-24;
f.repaint();
}
public void mouseMoved(MouseEvent e){}

}



}

Eseguendo il programma otterremo una finestra del tipo nel quale possiamo disegnare a nostro piacimento fino a 3000 linee tramite mouse (chi le disegna tutte------->premio)...;)