2013-11-21 154 views
1

嗨有沒有一種方法來重寫繪畫,就像我使用此LabelField來更改ObjectChoiceField的標題顏色一樣。如何更改objectchoicefield標題的顏色

LabelField f = new LabelField("Title "){ 
        protected void paint(Graphics g) { 
          g.setColor(Color.RED); 
          super.paint(g); 
         } 
       }; 

我要改變「稱號」的字體顏色:

final String[] options={"1","2","3"}; 
final ObjectChoiceField ocf=new ObjectChoiceField("Title",options); 
+0

你是什麼意思的「標題」?你指的是位於下一個**的「標籤」,還是顯示不同*選項*的字符串? – Nate

+0

@Nate Hello位於該字段旁邊的標籤。我如何重寫ObjectChoiceField中該「標籤」的屬性。當我說標題顏色的時候,我會對字符串的字體顏色進行修改,這些顏色是您可選擇的下一個字符。 – AmirG

回答

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,然後將其放在我想要的位置。所以,如果你這樣做,你根本不需要創建你自己的子類。只需將空字符串作爲標題/標籤傳入選擇字段,然後創建一個彩色的LabelField,正如您在問題中所示。

如果您有興趣更改選項本身的顏色或其他屬性(不是標題/標籤),則可以使用see this recent Stack Overflow questioncheck out a blog post I wrote on this a long time ago

+0

謝謝@Nate我實際上做了你所說的關於讓另一個標籤控制我的objectchoicefield「Tittle」並讓字符串標籤爲空,所以我可以輕鬆地更改它的顏色和字體樣式。我只是放置了一個行和兩列的網格:1列的標題爲labelfield,第二列爲帶空字符串標籤的objectchoicefield。 – AmirG