Gå til innhold

Anbefalte innlegg

public class HovedKlasse() {
 private ArrayList<Dressing> liste;
 private int dressingFerdig;

 public HovedKlasse() {
   dressingFerdig = 0;

   for(int i = 0; i < 10; i++) {
     liste.add(new Dressing());
     liste.get(liste.size() - 1). // legge til listener
   }
 }
 private listenerAvNoeSlag( event ) {
   if( får beskjed) dressingFerdig++;
}

public class Dressing() {
 private boolean erFerdig;

 public void gjørDressingFerdig() {
   erFerdig = true;
   //sende beskjed til listener om at dressingen er ferdig
 }
}

 

Jeg er gankse sikker på at dette kan gjøres med propertyChangeListener, men aner ikke hvordan. Har søkt en del rundt, men finner enten ikke det jeg vil gjøre, eller store vegger med tekst. Som oftest begge deler. Finnes det noen der ute som ville tatt seg tid til å forklare? :)

 

PS: dette er ikke den egentlige kode, kun et eksempel, da den egentlig koden er relativt stor.

Endret av [+]Eirik[+]
Lenke til kommentar
  • 1 måned senere...
Videoannonse
Annonse

Litt seint svar her. Betre seinte enn aldri? Du kan bruke Observer og Observable til dette. Eit eksempel er vist under. Prinsippe er at eitt objekt observerer andre objekt som ein kan oberservere (extends Observable). Dei objekta som ein observere må kalle "setChanged()" og "notifyObservers()" når endringar skjer. "notifyObservers" kan ha argument med også.

 



import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

public class Hovedklasse implements Observer {

    private ArrayList<Dressing> liste;
    private int dressingFerdig;

    public Hovedklasse() {
        dressingFerdig = 0;
        liste = new ArrayList();
        for (int i = 0; i < 10; i++) {
            Dressing d = new Dressing("Dressing " + i);
            d.addObserver(this); // legg til observer
            liste.add(d);
        }
    }

    public static void main(String[] a) throws InterruptedException {
        Hovedklasse h = new Hovedklasse();
        h.liste.get(0).gjørDressingFerdig();
        Thread.sleep(500);
        h.liste.get(1).gjørDressingFerdig();
    }

    public void update(Observable o, Object arg) {
        dressingFerdig++;
        System.out.println("Ein dressing er ferdig! (" + ((Dressing) o).getNavn() + ").");
    }
}

class Dressing extends Observable {

    private boolean erFerdig;
    private String navn;

    public Dressing(String navn) {
        this.navn = navn;
        this.erFerdig = false;
    }

    public void gjørDressingFerdig() {
        erFerdig = true;
        // Notify observers of change
        setChanged();
        notifyObservers();
    }

    public String getNavn() {
        return navn;
    }
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...