Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [java] chiamata a funzione

    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.

  2. #2
    c'è nessunooooo!!!!

  3. #3
    codice:
     SketchPanel.draw_rectangle(x1,y1,x2,y2);
    Ma e' un esempio o hai scritto davvero cosi'?
    Perche' il metodo non e' statico, quindi non dovrebbe nemmeno compilare...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  4. #4
    la funzione l'ho richiamata in quel modo dalla classe Recognizer,mi da errore solo in fase di esecuzione.

  5. #5
    Ma hai dichiarato una variabile chiamata SketchPanel?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    nella classe dove ho richiamato la finzione cioè Recognizer ho dichiarato sketchPanel in questo modo:

    private SketchPanel SketchPanel;

    questo sotto è l'inizio della classe Recognizer dove c'è la dichiarazione:

    public class Recognizer {

    private Vector bottomLeft;
    private Vector topLeft;
    private Vector bottomRight;
    private Vector topRight;
    private Vector bottom;
    private Vector top;
    private Vector bottomD;
    private Vector topU;

    private BufferedImage theSketch;
    public Vector shapeList;
    public Vector polyLineList;
    private Vector edgeList;
    private Vector theHSeqList;
    //////dichiarazione di SketchPanel
    private SketchPanel SketchPanel;
    /////
    private Graphics gr;

    boolean prova[]=new boolean[3];
    int temp=0;
    int x1,y1,x2,y2;
    int a= 10;
    static final boolean PRINTS = false;

    public Recognizer(BufferedImage theImage){
    theSketch = theImage;
    shapeList = new Vector();
    polyLineList = new Vector();
    edgeList = new Vector();
    theHSeqList = new Vector();
    pTableInit();
    }//end constructor
    .....etc.
    ....etc.

  7. #7
    Ok, ma poi glielo assegni un valore? Altrimenti e' logico che ti dice che e' nullo...

    P.S. Se ti e' possibile, cambiagli nome, non e' bello avere entita' diverse con lo stesso nome.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    non gli assegno nessun valore,

    SketchPanel.draw_rectangle(x1,y1,x2,y2);

    lo uso per richiamare la funzione draw_rectangle,
    che valore gli dovrei assegnare?

  9. #9
    lo uso per richiamare la funzione draw_rectangle,
    Forse in Visual Basic puoi fare una cosa del genere....

    codice:
    SketchPanel SketchPanel = new SketchPanel ();
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  10. #10
    sto programmando in java, comunque ho inserito

    SketchPanel SketchPanel = new SketchPanel ();

    ma mi da un'eccezione nel main

    Exception in thread "main" java.lang.OutOfMemoryError

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.