Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30

    [JAVA] Problema HashMap<K, V>

    Ho una classe di nome Viewer con un field definito così:
    codice:
    private Map<Personaggio, ImageIcon> characterMap = new HashMap<Personaggio, ImageIcon>();
    e due funzioni della stessa classe:
    codice:
    public void notifyCreation(Personaggio p, ImageIcon i) throws RemoteException{
        
            characterMap.put(p, i);
            }
    e
    codice:
    public Map<Personaggio, ImageIcon> getMap(){
            
            
            return characterMap;
        }
    Da una classe di un altro package creo un oggetto di tipo Viewer, chiamo su di esso la notifyCreation e subito dopo la getMap.
    Facendo stampare dentro di esse (con characterMap.size() ) la dimensione della mappa, dentro la creation mi stampa 1 (1 valore nella mappa) mentre nella getMap mi stampa 0 (mappa vuota) nonostante il valore sia stato inserito. Com'è possibile?

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Strano... il codice dell'altra classe?

    Ciao

  3. #3
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30
    Originariamente inviato da progAnd
    Strano... il codice dell'altra classe?

    Ciao
    Il codice dell'altra classe è piuttosto complesso, però creo faccio la notifyCreation e poi dichiaro una mappa e faccio la getmap ma il risultato è una mappa vuota! Mi è difficile copiare tutto il codice

  4. #4
    Originariamente inviato da burm87
    ...creo faccio la notifyCreation e poi dichiaro una mappa e faccio la getmap ma il risultato è una mappa vuota!
    Questa non l'ho capita dato che contraddice ciò che hai affermato nel post iniziale:

    Originariamente inviato da burm87
    ...Da una classe di un altro package creo un oggetto di tipo Viewer, chiamo su di esso la notifyCreation e subito dopo la getMap.
    Cosa intendi per "poi dichiaro una mappa"? Crei un altra istanza di Viewer? In questo caso è ovvio che la mappa è vuota
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Non devi copiare tutto il codice, solo le righe incriminate.

    Ciao

  6. #6
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30
    Originariamente inviato da satifal
    Questa non l'ho capita dato che contraddice ciò che hai affermato nel post iniziale:


    Cosa intendi per "poi dichiaro una mappa"? Crei un altra istanza di Viewer? In questo caso è ovvio che la mappa è vuota
    Dichiaro un mappa per poi assegnarci il riferimento..
    Viewer p;
    p.notifyCreation(x,y);
    Map<Personaggio, ImageIcon> m = p.getMap();

    Avendo fatto fatto la notify la mappa contenuta in Viewer non è vuota, ma la mappa m lo è.

  7. #7
    Originariamente inviato da burm87
    Dichiaro un mappa per poi assegnarci il riferimento..
    Viewer p;
    p.notifyCreation(x,y);
    Map<Personaggio, ImageIcon> m = p.getMap();

    Avendo fatto fatto la notify la mappa contenuta in Viewer non è vuota, ma la mappa m lo è.
    Il codice sembrerebbe corretto. Dev'esserci qualcosa che non hai postato a causare problemi.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30
    Originariamente inviato da satifal
    Il codice sembrerebbe corretto. Dev'esserci qualcosa che non hai postato a causare problemi.
    Ho risolto, avevo come al solito combinato la mia.. Ossia mi ero dimenticato che la classe Viewer doveva estendere UnicastRemoteObject visto che l'interfaccia che implementa estende Remote.

  9. #9
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30
    Comunque avrei un'altra domanda, ma non so se aprire un altro topic essendo un argomento diverso. Devo mettere un'immagine in un JPanel e siccome devo ridimensionarla faccio così:
    codice:
        private void setIcon(ImageIcon i, JPanel p){
        
            Image im = i.getImage().getScaledInstance(200, -1, Image.SCALE_SMOOTH);
            p.add(new JLabel(new ImageIcon(im)));
    
        }
    Però alla pressione di alcuni bottoni questa immagine deve essere cambiata, pensavo che bastasse richiamare la funzione sopra ma l'immagine resta la prima impostata. Ho provato anche con .validate() ma nulla. Come posso fare?

  10. #10
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Quel metodo aggiunge un immagine, non la sostituisce. Se il pannello non è sufficientemente grande non vedi l'immagine aggiunta. Per sostituire l'immagine dovresti accedere alla JLabel interna e sostituire lì l'immagine. Serve poi un repaint().

    Ciao

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.