Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java] Dubbi con notifyObservers e Update

    Io ho due funzioni nel model. Una aggiorna un timer

    codice:
        public void increment(){
            if(value<maxValue)
                value++;
            setChanged(); 
            notifyObservers(1);
        }
    L'altra invece aggiorna una variabile

    codice:
    public void mouse(String mouse){
            this.mouse=mouse;
            setChanged(); 
            notifyObservers(2);
        }
    Ho pensato di dare al notifyObservers un argomento diverso così che quando arrivasse la notifica all'update() nel view potesse decidere se aggiornare il timer o mostrare un popup con la variabile mouse.
    codice:
        public void update(Observable arg0, Object arg1) {
            if(arg1.toString()=="1")
            updateView();
            else if (arg1.toString()=="2")
                showPopup();
        }
    Ma non succede nulla. Ho sbagliato a intendere a cosa serve il notifyObservers oppure è solo un errore di natura tecnica?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Le stringhe (il contenuto degli oggetti) si confrontano con equals() .... non con ==
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Cavolo che asino son stato. Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ad ogni modo tu stai passando un Integer (autoboxing del literal int) e non una stringa. Quindi perchè "trasformarlo" in stringa per confrontarlo?

    codice:
    public void update(Observable arg0, Object arg1) {
       if( arg1.equals(1) )
          updateView();
       else if (arg1.equals(2))
          showPopup();
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Hai ragione, non era asolutamente il caso
    Con l'integer posso usare == o anche qua è necessario equals?

  6. #6
    Certo con int (o Integer) si deve usare ==
    Ultima modifica di schumy2000; 17-06-2015 a 17:36
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7

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.