Ciao ho provato questo codice tratto da mokabyte.it, solo che il JFrame è tutto nero, qualcuno sa dirmi il perché?
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);
}
}