codice:
public class Lavagna extends Canvas {
	private int width;
	private int height;
	private int sideWidth;
	private Image sfondo;
	private boolean sfondoCaricato;
	private boolean disegna;
	private int strumentoSelezionato;
	private int start_x;
	private int start_y;
	private int x;
	private int y;
	
	public Lavagna(int height, int width, int sideWidth) {
		this.width = width;
		this.height = height;
		this.sideWidth = sideWidth;
		disegna = false;
		sfondoCaricato = false;
		sfondo = null;
		
		setLocation(sideWidth,0);
		setSize(width-sideWidth,height/2);
		setBackground(Color.white);
		
		GestoreDisegni gestoreDisegni = new GestoreDisegni(this);
		addMouseListener(gestoreDisegni);
		addMouseMotionListener(gestoreDisegni);
	}
	
	public void paint (Graphics g) {
		if (sfondo!=null) {
			g.drawImage(sfondo,0,0,width,height,this);
		}
		else {
			super.paint(g);
			if (disegna) {
				switch (strumentoSelezionato) {
					case LavagnaPanel.STRUMENTO_PENNELLO:
						g.drawLine(start_x,start_y,x,y);
				}
			}
		}
	}
	
	public void setSfondo(Image sfondo) {
		this.sfondo = sfondo;
	}
	
	public void setDisegna (boolean disegna) {this.disegna = disegna;}
	
	public void setStrumento (int strumento) {
		strumentoSelezionato = strumento;
	}
	
	public void setStartX (int x) {start_x = x;}
	
	public void setStartY (int y) {start_y = y;}
	
	public void setX (int x) {this.x = x;}
	
	public void setY (int y) {this.y = y;}
	
	// * * * * * * * * * * * * * * * * * * * * * * * * * *
	
	private class GestoreDisegni implements MouseListener,MouseMotionListener {
		private boolean disegna;
		private Lavagna lavagna;
		private Graphics g;
		private int start_x;
		private int start_y;
		
		public GestoreDisegni (Lavagna l) {
			lavagna = l;
			g = lavagna.getGraphics();
			disegna = false;
			//DEBUG
			System.out.println(g==null);
		}
		
		public void mouseClicked(MouseEvent e) {
			
		}
		
		public void mousePressed(MouseEvent e) {
			if (e.getButton()==1) {
				lavagna.setDisegna(true);
				lavagna.setStartX(e.getX());
				lavagna.setStartY(e.getY());
			}
		}
		
		public void mouseReleased(MouseEvent e) {
			lavagna.setDisegna(false);
		}
		
		public void mouseMoved(MouseEvent e) {
			
		}
			
		public void mouseEntered(MouseEvent e) {
		}
		
		public void mouseExited(MouseEvent e) {
		}
		
		public void mouseDragged(MouseEvent e){
			lavagna.setX(e.getX());
			lavagna.setY(e.getY());
			lavagna.repaint();
		}
	}
	
}
alla costante STRUMENTO_PENNELLO potete sostituire 1, se pensate di compilare la classe. Il problema si presenta nella classe privata GestoreDisegni