Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema JSWING

  1. #1

    Problema JSWING

    Ho un problema che mi sta facendo sbattere la testa contro il muro da due giorni . Sto facendo un gioco progetto che prevede il caricamento delle immagini delle carte. Però proprio li mi da un errore di NUllPointerException. Ho provato a controllare e ricontrollare ma nn c'è nulla di errato.

    Vi posto il codice :

    codice:
     public class Gui extends JFrame implements iConsole {
    
    	private static final String IMG_PATH = "SetteeMezzo/res/";
    
    	private Container cp;
    	private JLabel labelSfidante;
    	private JLabel labelBanco;
    	private JLabel labelCapitale;
    	private JLabel labelPuntata;
    
    	private JLabel labelCarteSfidante;
    	private JPanel carteSfidante;
    
    	private JLabel labelCarteBanco;
    	private JPanel carteBanco;
    	
    	private boolean inizioSfidante;
    	private boolean inizioBanco;
    
    	public Gui() {
            super("Il gioco del setteemezzo");
    		
    		inizioSfidante  = true;
    		inizioBanco = true;
    		
    		labelSfidante = new JLabel("Punti sfidante : 0");
    		labelBanco = new JLabel("Punti del banco: 0");
    		labelCapitale = new JLabel("Capitale: 0");
    		labelPuntata = new JLabel("Puntata: 0");
    		labelCarteSfidante = new JLabel("Carte dello sfidante");
    		labelCarteBanco = new JLabel("Carte del banco");
    		
    	
    		carteBanco = new JPanel();
    		carteBanco.setLayout (new FlowLayout());
    		
    		carteSfidante = new JPanel();
    		carteSfidante.setLayout(new FlowLayout());
    		
    		cp = getContentPane();
    		cp.setLayout(new BorderLayout());
    		
    		JPanel creditoPuntata = new JPanel();
    		creditoPuntata.setLayout(new GridLayout(2,2));
    		creditoPuntata.add(labelCapitale);
    		creditoPuntata.add(labelPuntata);
    		creditoPuntata.add(labelSfidante);
    		creditoPuntata.add(labelBanco);
    		cp.add(creditoPuntata, BorderLayout.NORTH);
    		
    		
    		JPanel tavoloGioco = new JPanel();
    		tavoloGioco.setLayout(new GridLayout(0,1));
    		tavoloGioco.add(labelCarteSfidante);
    		tavoloGioco.add(carteSfidante);
    		tavoloGioco.add(labelCarteBanco);
    		tavoloGioco.add(carteBanco);
    		cp.add(tavoloGioco, BorderLayout.CENTER);
    		cp.add(carteSfidante, BorderLayout.AFTER_LAST_LINE);
    		cp.add(carteBanco, BorderLayout.AFTER_LAST_LINE);
    	    JLabel label = new JLabel();
    	    label = loadImage("00.gif");
    	    label.setBounds(20, 35, 65, 110);
    	    carteSfidante.add(label);
    		
    		
    	}
    
    	public void stampaMsg(String msg) {
    		
    	   JOptionPane.showMessageDialog(null, msg, "", 0);
    		
    	}
    
    	public boolean chiediSiNo(String msg) {
    		int response =
    			JOptionPane.showConfirmDialog(null,msg,"Seleziona una opzione",
    					JOptionPane.YES_NO_OPTION);
    		return response == JOptionPane.YES_OPTION;
    	}
    
    	public int chiediInteger(String msg) {
    	    try
            {
                return Integer.parseInt(JOptionPane.showInputDialog(msg));
            }
            catch(NumberFormatException e)
            {
                return 0;
            }
    	}
    
    	public String chiediTesto(String msg) {
    		 return JOptionPane.showInputDialog(msg);
    	}
    
    	public int videataIniziale() {
    		Gui JFrame = new Gui();
            JFrame.setBounds(100, 150, 650, 500);
            JFrame.setDefaultCloseOperation(3);
            JFrame.show();
    		return 0;
    	}
    
    	public void iniziaMano(int credito, int puntata) {
    		labelCapitale.setText("Capitale: " + credito);
    		labelPuntata.setText("Puntata " + puntata);
    		carteBanco.removeAll();
    		carteSfidante.removeAll();
    		carteBanco.add(loadImage("00.gif"));
    		carteSfidante.add(loadImage("00.gif"));
    		inizioSfidante = true;
    		inizioBanco = true;
    	}
    
    	public void videataMano(Carta carta, double punti, Giocatore g) {
    		JLabel imgCarta = loadImage(nomeImmagineCarta(carta));
    		if(g instanceof GiocatoreUmano)
    		{
    			if (inizioSfidante) carteSfidante.removeAll();
    			inizioSfidante = false;
    			carteSfidante.add(imgCarta);
    			labelSfidante.setText("Punti sfidante: " + punti);
    
    		} else 
    		if(g instanceof BancoCPU)
    		{
    			if (inizioBanco) carteBanco.removeAll();
    			inizioBanco = false;
    			carteBanco.add(imgCarta);
    			labelBanco.setText("Punti banco: " + punti);
    		}
    		pack();
    	}
    
    	private JLabel loadImage(String name) {
    		JLabel lab = null;
    		ClassLoader loader = getClass().getClassLoader();
    		URL url = loader.getResource(IMG_PATH+name);
    		lab = new JLabel(new ImageIcon(url));
    		return lab;
    	}
    
    	private String nomeImmagineCarta(Carta c) {
    		Seme seme = c.daiSeme();
    		TipoCarta punto = c.daiPunto();
    		return seme.toString()  + punto.toString() + ".gif";
    	}
    la riga dove da l'errore è quella presente in loadImage e precisamente " lab=new JLabel(new ImageIcon(url)). Ho provato anche a creare il package con le immagini ma niente. C'è una soluzione??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema JSWING

    Originariamente inviato da Gogeta SSJ87
    la riga dove da l'errore è quella presente in loadImage e precisamente " lab=new JLabel(new ImageIcon(url)). Ho provato anche a creare il package con le immagini ma niente. C'è una soluzione??
    Il punto che è probabilmente non hai compreso bene come funziona getResource(). Se non l'hai già fatto, leggi Loading Images Using getResource.
    Vale più di mille mie parole!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Fatto. Però l'errore me lo da sempre . Cioè li spiega cosa fa e fa tutto cio che faccio io. Però a me nn carica le immagini . Cosa sbaglio ??
    Ho capito che nn mi trova la cartella però faccio tutto quello che mi dice li.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Gogeta SSJ87
    Cioè li spiega cosa fa e fa tutto cio che faccio io. Però a me nn carica le immagini
    Se hai capito come funziona, allora avrai appreso che si basa sul "classpath". Quindi ... la cartella SetteeMezzo è in classpath???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Cosa intendi per "la cartella SetteeMezzo è in classpath"? Ti dico come ho organizzato il programma. In pratica ho il package SetteeMezzo che contiene vari sottopackage tra cui quello in cui è contenuto la classe gui che si chiama SetteeMezzo.interfacciautente, e un altro in cui è contenuto la cartella con le immagini che è appunto SetteeMezzo.res. Quindi io da gui ho chiamato il path in cui sono contenute le immagini.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Gogeta SSJ87
    Cosa intendi per "la cartella SetteeMezzo è in classpath"?
    Facciamo un passo indietro .... sai cosa è il "classpath"???
    Detto in poche parole: è un elenco di directory e/o file jar/zip che la JVM userà per cercare le classi ... incluse le "risorse" ottenute con getResource().

    Quindi ripeto: come è impostato il classpath?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Su eclipse come si fa a vedere il classpath?? E' un dubbio che avevo da tempo questo.

  8. #8
    Ho risolto il problema. Ineffetti dovevo caricare meglio le immagini nel classpath. Ora però nonostante le immagini vengono trovate, non vengono stampate. Per caso sbaglio qualcosa nel costruttore precedentemente caricato??

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.