Java 如何使用观察者的更新方法更新不同的标签?

Java 如何使用观察者的更新方法更新不同的标签?,java,codenameone,Java,Codenameone,我试图创建一个带有不同标签的scoreview,并在变量状态改变时更新每个标签。比如说,我有一个扩展了observable的类,它有几个方法可以改变生命、时钟、食物和健康的值。这些方法也会通知观察者,在我的例子中,这就是scoreview import java.util.Observable; import com.codename1.ui.Display; public class GameWorld extends Observable { .....

我试图创建一个带有不同标签的scoreview,并在变量状态改变时更新每个标签。比如说,我有一个扩展了observable的类,它有几个方法可以改变生命、时钟、食物和健康的值。这些方法也会通知观察者,在我的例子中,这就是scoreview

import java.util.Observable;

import com.codename1.ui.Display;    
public class GameWorld extends Observable { 
            .....
            private int lives = 3; 
            private int clock = 10; 
            private int food = 0;
            private int health = 0;
            .....

            public void someMethodThatChangesValueOfLives {
                    lives--; //decreases lives
                    setChanged();
                    notifyObservers(lives);  
            }
            public void someMethodThatChangesValueOfClock {
                    clock++; //increases clock
                    setChanged();
                    notifyObservers(clock);  
            }
            public void someMethodThatChangesValueOfFood {
                    food += 30; //decreases lives
                    setChanged();
                    notifyObservers(food);  
            }
            public void someMethodThatChangesValueOfHealth {
                    health += 30; //decreases lives
                    setChanged();
                    notifyObservers(health);  
            }
    }
我的scoreview类有不同的标签,用于存储当前的生命、时钟、食物和健康。我的问题是,我应该如何告诉更新方法要更新哪个标签?假设我的生命减少我如何使它更新生命标签而不是时钟标签或其他标签

import java.util.Observable;
import java.util.Observer;
import com.codename1.ui.Container;
import com.codename1.ui.Label;

    public class ScoreView extends Container implements Observer {
        private Label timeLabelText;
        private Label timeLabelValue;
        private Label livesLabelText;
        private Label livesLabelValue;
        private Label foodLabelText;
        private Label foodLabelValue;
        private Label healthLabelText;
        private Label healthLabelValue;
        ...more labels

        public ScoreView () {
            timeLabelText = new Label("Time:");
            timeLabelValue = new Label(" 0");
            livesLabelText = new Label("Lives Left:");
            livesLabelValue = new Label(" 3");
            foodLabelText = new Label("Food Level:");
            foodLabelValue = new Label("30");
            healthLabelText = new Label("Health Level:");
            healthLabelValue = new Label("10");
            ...more labels

            this.addComponent(timeLabelText);
            this.addComponent(timeLabelValue);
            ...add more labels to components
        }

        //How to tell update which label to update from the argument?
        public void update (Observable o, Object arg) {
            String clock = (String)arg;
            timeLabelValue.setText(clock);
            String lives = (String)arg;
            livesLabelValue.setText(lives);
            String food = (String)arg;
            foodLabelValue.setText(food);
            String health = (String)arg;
            healthLabelValue.setText(health);
}

属性可以很好地实现这一点,它们还具有其他一些方便的特性


同意。还有
EventDispatcher
,它允许您添加侦听器并向其激发事件