salve ragazzi,
ho un problema con una chiamata a funzione(draw_rectangle) ;
questa funzione si trova sotto una classe chiamata
sketchPanel che vi riporto qui sotto:
public class SketchPanel extends JPanel implements MouseListener, MouseMotionListener {
private Rectangle stroke = new Rectangle();
private int x1,y1;
private int x2,y2;
private final static int IMAGE_HEIGHT = 400;
private final static int IMAGE_WIDTH = 300;
private BufferedImage bi = new BufferedImage(IMAGE_WIDTH,IMAGE_HEIGHT,BufferedIma ge.TYPE_INT_ARGB);
private BufferedImage biR = new BufferedImage(IMAGE_WIDTH,IMAGE_HEIGHT,BufferedIma ge.TYPE_INT_ARGB);
private Graphics2D g2;
private Graphics gr;
private Graphics2D big = bi.createGraphics();
private Graphics2D biRg = biR.createGraphics();
private boolean postInit=false;
public boolean recognized = false;
private Recognizer recEngine = new Recognizer(bi);
public SketchPanel() {
setOpaque(true);
setBackground(Color.white);
addMouseMotionListener(this);
addMouseListener(this);
big.setColor(Color.BLACK);
System.out.println("panel");
}
public Recognizer getRecognizer(){
return recEngine;
}
public BufferedImage getImage(){
return bi;
}
public void pulisciTutto() {
bi = new BufferedImage (IMAGE_WIDTH,IMAGE_HEIGHT,BufferedImage.TYPE_INT_A RGB);
biR = new BufferedImage(IMAGE_WIDTH,IMAGE_HEIGHT,BufferedIma ge.TYPE_INT_ARGB);
big = bi.createGraphics();
biRg = biR.createGraphics();
postInit=false;
recognized = false;
recEngine = new Recognizer(bi);
setOpaque(true);
setBackground(Color.white);
big.setColor(Color.BLACK);
repaint();
}
public void mousePressed(MouseEvent e) {
e.consume();
if (!recognized){
postInit=true;
x1 = e.getX();
y1 = e.getY();
stroke.setBounds(x1, y1, e.getX(), e.getY());
repaint();
}
}
public void mouseDragged(MouseEvent e) {
e.consume();
if (!recognized){
stroke.setBounds(x1, y1, e.getX(), e.getY());
x1 = e.getX();
y1 = e.getY();
}
else{
recognized = false;
x1 = e.getX();
y1 = e.getY();
}
repaint();
}
public void mouseReleased(MouseEvent e) {
e.consume();
if (recognized) recognized = false;
repaint();
}
public void mouseMoved(MouseEvent e) {
e.consume();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void paint(Graphics g) {
g2=(Graphics2D)g;
g2.setBackground(Color.WHITE);
if (recognized){
g2.drawImage(biR, 0, 0, Color.WHITE, this);
}
else {
if (big.getColor().equals(Color.BLACK)) {
if (postInit) big.drawLine(stroke.x, stroke.y, stroke.width, stroke.height);
}
else if (big.getColor().equals(Color.WHITE)){
big.fillRect(stroke.x, stroke.y, 9, 9);
}
g2.drawImage(bi, 0, 0, Color.WHITE, this);
}
}
public void setDrawColor(Color theColor){
big.setColor(theColor);
}
///////funzione draw_rectangle
public void draw_rectangle (int x1, int y1, int x2, int y2) {
pulisciTutto();
biRg.setColor(Color.black);
biRg.drawLine(x1,y1,x2,y2);
int a=x1;
int b=y1;
int c=x2;
int d=y2;
biRg.drawLine(a,b,c,d);
System.out.println(" a = "+a);
}
///////fine funzione
}
}
Questa funzione viene richiamata da un'altra classe chiamata Recognizer in questo modo:
SketchPanel.draw_rectangle(x1,y1,x2,y2);
quando vado a compilare non da nessun tipo di errore, mentre se vado ad eseguire mi da un errore in corrispondenza della chiamata a funzione in Recognizer
java.lang.NullPointerException
at Recognizer.boundaryWrap(Recognizer.java:749)
at Recognizer.boundaryDetection(Recognizer.java:873)
at Recognizer.sequenceList(Recognizer.java:389)
come posso risolvere questo problema.