Avatar billede thetallman Nybegynder
15. oktober 2007 - 14:22 Der er 2 kommentarer og
1 løsning

Beans - bound Property

Jeg har oprettet en "Person"-klasse og en "TestPerson"-klasse. "Person"-klassen er en bean. Mit problem er at jeg ikke kan få dens bound Property til at virke! I min "TestPerson"-klasse har jeg forsøgt at tilknytte en PropertyChangeListener, men der skives intet ud i consolen når "TestPerson"-klassen køres?! hvad har jeg gjort galt!?:-)
-----------------------------------------------------------------
Person
-----------------------------------------------------------------
package d_07_09_14_JavaBeans;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.List;
import java.util.ArrayList;

public class Person {

    private String navn;

    private int alder;

    private String adresse;

    private PropertyChangeSupport changes = new PropertyChangeSupport(this);

    private List<AgeErrorListener> listner = new ArrayList<AgeErrorListener>();

    public Person() {
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
        // save current value of property
        String oldValue = this.adresse;
        // assign new value of property
        this.adresse = adresse;
        // send change event to listeners, because the property has changed
        changes.firePropertyChange("string", oldValue, adresse);

    }

    public int getAlder() {
        return alder;
    }

    public void setAlder(int alder) {
        this.alder = alder;
        // save current value of property
        int oldValue = this.alder;
        // assign new value of property
        this.alder = alder;
        // send change event to listeners, because the property has changed
        changes.firePropertyChange("string", oldValue, alder);
        if (!tjekAlder(alder)) {
            fireAgeErrorEvent(new AgeErrorEvent(this));
        }
    }

    private boolean tjekAlder(int alder) {
        if (alder > 141 || alder < 0) {
            return false;
        } else
            return true;
    }

    public String getNavn() {
        return navn;
    }

    public void setNavn(String navn) {
        this.navn = navn;
        // save current value of property
        String oldValue = this.navn;
        // assign new value of property
        this.navn = navn;
        // send change event to listeners, because the property has changed
        changes.firePropertyChange("string", oldValue, navn);

    }

    public void addPropertyChangeListener(PropertyChangeListener l) {
        changes.addPropertyChangeListener(l);
        }

    public void removePropertyChangeListener(PropertyChangeListener l) {
        changes.removePropertyChangeListener(l);
    }

    public void addAgeErrorListener(AgeErrorListener arg0) {
        listner.add(arg0);
    }

    public void removeAgeErrorListener(Object arg0) {
        listner.remove(arg0);
    }

    public void fireAgeErrorEvent(AgeErrorEvent e) {
        for (int i = 0; listner.size() > i; i++) {
            listner.get(i).ageError(e);
        }
    }

}

-----------------------------------------------------------------
TestPerson
-----------------------------------------------------------------

package d_07_09_14_JavaBeans;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;


public class TestPerson {

    /**
    * @param args
    */
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.addPropertyChangeListener(new PropertyChangeListener() {

            public void propertyChange(PropertyChangeEvent arg0) {
                System.out.println("Alder er ændret!");
               
            }
           
        });
        p1.addAgeErrorListener(new AgeErrorListener() {

            public void ageError(AgeErrorEvent e) {
                System.out.println("Forkert Alder!");
               
            }
           
        });
       
        p1.setAlder(12);
        p1.setAlder(112);
        p1.setAlder(2);
       

    }

}
Avatar billede winners79 Nybegynder
15. oktober 2007 - 17:04 #1
DU skal ændre lidt i din sæt alder:

public void setAlder(int alder) {
        //this.alder = alder; <- hvis du gør dette så er den nye alder = oldvalue, også er der er ikke en change event
        // save current value of property
        int oldValue = this.alder;
        // assign new value of property
        this.alder = alder;
        // send change event to listeners, because the property has changed
        changes.firePropertyChange("string", oldValue, alder);
        if (!tjekAlder(alder)) {
            fireAgeErrorEvent(new AgeErrorEvent(this));
        }
    }
Avatar billede thetallman Nybegynder
16. oktober 2007 - 15:26 #2
Selvf! nu virker det!! tak for hjælpen winners79!
kan du ikke smide et svar så jeg kan acceptere det og give dig pointene?!

ps: logiske fejl....arg....:-)
Avatar billede winners79 Nybegynder
16. oktober 2007 - 15:54 #3
så lidt da:)

bare husk at ændre i setnavn og setadresse også
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester