Announcement

Collapse
No announcement yet.

Event mit parater ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Christian wenn ich vier Attributen habe soll ich auch für jede Attribute diese code schreiben wie du oben für a gemacht hast?
    #
    B(A a)
    #
    {
    #
    a.addPropertyChangeListener(new PropertyChangeListener()
    #
    {
    #
    @Override
    #
    public void propertyChange(PropertyChangeEvent evt)
    #
    {
    #
    System.out.println("Das Eingabefeld hat sich von "+evt.getOldValue()+" nach "+evt.getNewValue()+" geändert");
    #
    }
    #

    #
    });
    #

    Comment


    • #17
      Nein -> siehe Beispiel. Die Klasse die informiert wird hat nur eine Methode, die die Änderungen empfängt

      Was sie damit macht bleibt der Klasse überlassen.

      Die Klasse die feuert kann an mehreren Stellen fire.... aufrufen

      In dieser Klasse wird der Listner nur EINMAL registriert
      Christian

      Comment


      • #18
        Die Klasse die informiert wird ist doch die Klasse B und die geänderte attribut ist hier a wenn ich jetzt noch ein Attribut b habe muss auch seine änderung betrachtet indem ich folgenden code schreibe
        B(A b)
        #
        {
        #
        b.addPropertyChangeListener(new PropertyChangeListener()
        #
        {
        #
        @Override
        #
        public void propertyChange(PropertyChangeEvent evt)
        #
        {
        #
        System.out.println("Das Eingabefeld hat sich von "+evt.getOldValue()+" nach "+evt.getNewValue()+" geändert");
        #
        }
        oder mache ich falsch?

        #
        });
        #

        Comment


        • #19
          oder mache ich falsch?
          ja................
          Christian

          Comment


          • #20
            ich habe jetzt geschafft für jeder variable eine Event mit dem neuen wert rauszuschmeißen.Jetzt Kann jemand mir sagen ob es möglich ein event für ein object mit verschiedenen parameter zu schmeißen und wenn ja bitte wie

            Comment


            • #21
              ich habe andere Frage. Da ich benachrichtigen werden möchte sobald etwas geändert wird, suche ich einen Funktion, die so was macht. bei #6 gibt es diese Funktion firePropertyChange( "", , ); zum testen habe ich das benutzen, um was auf den Konsole zu schmeißen wenn die variablen sich ändert mit folgende Code
              public void setid(int id) {
              int oldValue = this.id;
              this.id = id;

              //
              // Fires a property change event
              //
              pcs.firePropertyChange("id",oldValue, id);
              abe eigentlich möchte ich wissen, ob wenn man diese Klasse instanziert gibt es die Möglichkeit if(firePropertyChange("id",oldValue, id)==true) dann macht irgendwas ?

              Danke für die Hilfe;

              Comment


              • #22
                ich habe folgnde code
                [highlight=java]
                public class MyBean implements PropertyChangeListener, Serializable {
                public int id;
                public static String name;
                private boolean trigger=false;
                private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

                public MyBean(String name, int id) {
                //pcs.addPropertyChangeListener(this);
                this.name=name;
                this.id=id;
                }
                public MyBean() {
                // pcs.addPropertyChangeListener(this);
                CallBeann B =new CallBeann(this);
                }

                /**
                * This method gets called when a bound property is changed.
                *
                * @param evt A PropertyChangeEvent object describing the event source
                * and the property that has changed.
                */
                public void propertyChange(PropertyChangeEvent evt) {
                /*System.out.println("Name = " + evt.getPropertyName());
                System.out.println("Old Value = " + evt.getOldValue());
                System.out.println("New Value = " + evt.getNewValue());
                trigger=true;
                System.out.println("trigger=" +trigger);
                System.out.println("New Value = " + evt.getNewValue());*/
                }

                public static void main(String[] args) {
                MyBean bean = new MyBean();

                bean.setName("My Initial Value",12);
                // bean.setName(new MyBean("megni",10));
                bean.setName("My Initial Value",12);
                // bean.setid(12);

                }

                //~ --------------------------------------------- Bean's Getters and Setters

                /* public Long getId() {
                return id;
                }

                public void setId(Long id) {
                this.id = id;
                }

                public String getName() {
                return name;
                }*/
                /* public void setid(int id) {
                int oldValue = this.id;
                this.id = id;

                //
                // Fires a property change event
                //
                pcs.firePropertyChange("id",oldValue, id);
                }*/

                public void setName(String name, int id ) {
                //String oldValue = this.name;
                //this.name = name;
                //MyBean bean1=new MyBean(this.name,this.id);
                //MyBean bean2=bean1;

                //
                // Fires a property change event
                //
                pcs.firePropertyChange("name", new MyBean(this.name,this.id),new MyBean(name,id));
                }
                public boolean change(){
                pcs.firePropertyChange("name", "oldValue", name);
                return true;

                }
                /*public static void addPropertyChangeListener(
                pcs.PropertyChangeListener propertyChangeListener)addPropertyChangeListener(l istener) {
                // TODO Auto-generated method stub

                }*/

                public void addPropertyChangeListener(PropertyChangeListener listener)

                {

                pcs.addPropertyChangeListener(listener);

                }

                public void removePropertyChangeListener(PropertyChangeListene r listener)

                {

                pcs.removePropertyChangeListener(listener);

                }


                }
                [/highlight]
                und
                [highlight=java]public class CallBeann

                {

                CallBeann (MyBean a)

                {

                a.addPropertyChangeListener(new PropertyChangeListener()

                {

                @Override
                public void propertyChange(PropertyChangeEvent evt)

                {

                System.out.println("Das Eingabefeld hat sich von "+evt.getOldValue()+" nach "+evt.getNewValue()+" geändert");
                System.out.println("hast sich geändert");

                }

                });


                }

                } [/highlight]
                obwohl ich die methode mit gliechen parameter bekomme ich immer eine nachricht ich weiß wo das pb liegt

                Comment


                • #23
                  obwohl ich die methode mit gliechen parameter bekomme ich immer eine nachricht ich weiß wo das pb liegt
                  Gibt es den Satz in einer verständlichen Form?


                  implements PropertyChangeListener,
                  A "PropertyChange" event gets fired whenever a bean changes a "bound" property. You can register a PropertyChangeListener with a source bean so as to be notified of any bound property updates.

                  Das gehört in die Klasse die lauscht
                  Zuletzt editiert von Christian Marquardt; 04.05.2012, 11:27.
                  Christian

                  Comment


                  • #24
                    obwohl ich die methode setName() zweimal mit den gleichen parameter aufgerufen habe, bekomme ich die Nachricht"hast sich geändert" normaleweise muss keine Nachricht geschickt werden wenn die Attributen die Gleichen Werte bekommen

                    Comment


                    • #25
                      Da du im Event neue Objekte anlegst,

                      new MyBean(this.name,this.id),new MyBean(name,id)

                      sind es neue Objekte. Was kann das für ein Sinn haben dort neue Objekte anzulegen, die sich nicht auf das Objekt beziehen, in dem die Änderung stattfand. Das ist in meinen Augen falsch
                      Christian

                      Comment


                      • #26
                        Jetzt habe ich eine andere frage aber fast gleich wie oben und zwar ich möchte jetzt einen event schicken sobald meine Funktion aufgerufen wird, denn meine Funktion läuft innerhalb einem thread. so habe ich gemacht aber es schein nicht zu funktioniert da die variablen sich nicht ändern
                        [highlight=c#]public void run()
                        {
                        while (!stopThread)
                        {
                        try
                        {
                        // 1. Get the data
                        Get_StatusInfo();


                        // 2. Throw an event with the new data
                        changes.firePropertyChange("Test", 0, 1);
                        //hier will ich den event raus schmeißen sobald die Funktion Get_StatusInfo(); aufgerufen wird
                        unabhängig ob die variable sich geändert hat oder nicht

                        //3.Sleep for 500ms
                        Thread.sleep(5000);


                        }
                        catch (Exception e)
                        {
                        System.out.println("Error in communication with the server");
                        stopThread =true;
                        }
                        }

                        // Closing the socket
                        try
                        {
                        s.close();
                        }
                        catch (IOException e)
                        {
                        //System.out.println("Error on closing the communication socket");
                        stopThread =true;
                        }
                        }[/highlight]
                        Danke für die Hilfe

                        Comment


                        • #27
                          Das Beispiel aus #11 funktioniert auch

                          propertySupport.firePropertyChange("Eingabefeld"," 1","2");
                          so oder

                          propertySupport.firePropertyChange("Eingabefeld",3 ,4);
                          so

                          Somit ist

                          funktioniert da die variablen sich nicht ändern
                          das nicht der Fehler
                          Christian

                          Comment

                          Working...
                          X