嗨有没有办法重写绘画,就像我用这个LabelField更改我的ObjectChoiceField的标题颜色。
LabelField f = new LabelField("Title "){
protected void paint(Graphics g) {
g.setColor(Color.RED);
super.paint(g);
}
};
我想更改“title”的字体颜色:
final String[] options={"1","2","3"};
final ObjectChoiceField ocf=new ObjectChoiceField("Title",options);
答案 0 :(得分:1)
你几乎完全按照LabelField
所做的那样做。您可以覆盖paint()
并拨打Graphics#setColor()
:
public class CustomColorChoiceField extends ObjectChoiceField {
public CustomColorChoiceField(String label, Object[] choices, int initialIndex) {
super("title", choices, initialIndex);
}
protected void paint(Graphics graphics) {
int oldColor = graphics.getColor();
graphics.setColor(Color.GREEN);
super.paint(graphics);
graphics.setColor(oldColor);
}
}
然后以正常方式将其添加到屏幕:
add(new CustomColorChoiceField("title", choices1, 0));
注意:我实际上通常不以这种方式使用ObjectChoiceField
。我几乎总是在""
(空字符串)作为标题传递。如果我确实想要标题/标签之类的东西,我通常会创建一个LabelField
,然后将它放在我想要的位置。因此,如果您这样做,则根本不需要创建自己的ObjectChoiceField
子类。只需将空字符串作为标题/标签传递到选择字段中,然后按照问题中的显示创建彩色LabelField
。
如果您有兴趣更改颜色或选项本身的其他属性(不是标题/标签),则see this recent Stack Overflow question或check out a blog post I wrote on this a long time ago。