Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    [JAVA] che vuol dire displayable

    come da topic

    chiamo Component.getGraphics() e mi ritorna una NullPointerException, la documentazione dice che questo accade quando il componente non è displayable

    che vuol dire, e come risolvo il problema?

  2. #2
    Significa che il tuo componente non è visualizzabile.
    Di che componente si tratta?
    ..::200 post il 1 settembre 2004::..
    ..::100 13/07/2004::..
    ..): Web Site (pazienza però) ..
    VASCO castiga chi non lecca la FIGA

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    ma è un JPanel

    è visualizzato sullo schermo quando mi da questa eccezione..che vuol dire

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    posta il codice

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    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

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    1 - posta il codice completo eseguibile (ho creato un frame e ci ho aggiunto una lavagna ma non si vede nulla).

    2 - passa a swing...

  7. #7
    codice:
    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);
    		}
    E' da un po che non programmo in java ma se non ricordo male ogni oggetto di tipo non primitivo va espicitamente istanziato con new,cosa che tu quì non fai con il membro privato lavagna,al momento incui invochi lavagna.getGraphics(); quindi lavagna è un riferimento null e da quì l'eccezzione che ti solleva.fammi sapere se è quello l'errore.
    Comunque mi associo al consiglio di postare l'intero codice eseguibile altrimenti riesce difficile aituarti
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    eccezione vuole una sola zeta vabbe' scu sate
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    non dovrebbe essere quello il problema, non è la lavagna ad essere null ma è l'oggetto graphics

    comunque,siccome questa parte di applicazione è gestita da 5 o 6 classi sto cercando di creare un eseguibile ad hoc che simula il funzionamento di tutta l'app

    appena ho fatto lo posto

  10. #10
    Ok
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.