Ciao a tutti...questo programma disegna il mouse a mano libera...mi potreste
indicare cosa modificare per fare in modo che ad un click del mouse nella
finestra venga tracciata una linea dal centro della finestra al punto del click
del mouse ?
Grazie.
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
public class Painter extends JPanel {
private int startXPoint = 0; // coordinata x di partenza
private int endXPoint = 0; // coordinata x di arrivo
private int startYPoint = 0; // coordinata y di partenza
private int endYPoint = 0; // coordinata y di arrivo
private boolean paint = false;
// ascoltatore del moto del mouse
class mMotionListener implements MouseMotionListener {
public void mouseDragged(MouseEvent e) {
// aggiorna le coordinate
startXPoint = endXPoint;
startYPoint = endYPoint;
endXPoint = e.getX();
endYPoint = e.getY();
// disegna
Painter.this.repaint();
}
public void mouseMoved(MouseEvent e) {
// aggiorna le coordinate
startXPoint = endXPoint;
startYPoint = endYPoint;
endXPoint = e.getX();
endYPoint = e.getY();
}
}
// ascoltatore dei pulsanti del mouse
class mListener implements MouseListener {
// i seguenti metodi sono richiesti dalla
// interfaccia MouseListener anche se non
// vengono utilizzati
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// pulsante premuto
public void mousePressed(MouseEvent e) {
// attiva la modalita' di disegno
paint = true;
}
// pulsante rilasciato
public void mouseReleased(MouseEvent e) {
// disattiva la modalita' di disegno
paint = false;
}
}
// Costruttore della classe principale
public Painter() {
super();
MouseListener ml = new mListener();
addMouseListener(ml);
MouseMotionListener mml = new mMotionListener();
addMouseMotionListener(mml);
}
public void paint(Graphics g) {
// se e' attiva la modalita' di disegno, traccia una riga
if(paint)
g.drawLine(startXPoint,startYPoint,endXPoint,endYPoint);
}
public static void main(String argv[]) {
Painter p = new Painter();
JFrame f = new JFrame("Painter");
f.getContentPane().add(p);
f.setSize(400,300);
f.setVisible(true);
}
}