Font color in LabelField is easily maintained by setting graphics.setColor on paint event before super.paint:
class FCLabelField extends LabelField {
public FCLabelField(Object text, long style) {
super(text, style);
}
private int mFontColor = -1;
public void setFontColor(int fontColor) {
mFontColor = fontColor;
}
protected void paint(Graphics graphics) {
if (-1 != mFontColor)
graphics.setColor(mFontColor);
super.paint(graphics);
}
}
class Scr extends MainScreen implements FieldChangeListener {
FCLabelField mLabel;
ButtonField mRedButton;
ButtonField mGreenButton;
ButtonField mBlueButton;
public Scr() {
mLabel = new FCLabelField("COLOR LABEL",
FIELD_HCENTER);
add(mLabel);
mRedButton = new ButtonField("RED",
ButtonField.CONSUME_CLICK|FIELD_HCENTER);
mRedButton.setChangeListener(this);
add(mRedButton);
mGreenButton = new ButtonField("GREEN",
ButtonField.CONSUME_CLICK|FIELD_HCENTER);
mGreenButton.setChangeListener(this);
add(mGreenButton);
mBlueButton = new ButtonField("BLUE",
ButtonField.CONSUME_CLICK|FIELD_HCENTER);
mBlueButton.setChangeListener(this);
add(mBlueButton);
}
public void fieldChanged(Field field, int context) {
if (field == mRedButton) {
mLabel.setFontColor(Color.RED);
} else if (field == mGreenButton) {
mLabel.setFontColor(Color.GREEN);
} else if (field == mBlueButton) {
mLabel.setFontColor(Color.BLUE);
}
invalidate();
}
}