2009-09-01 11 views
0

私は、editfield、ドロップダウン、ラベル、およびボタンで構成される水平方向のマネージャーの配列を持っています。私は水平構造のマネージャーのすべての配列を1つの垂直方向のマネージャーに配置して、グリッドのような構造のようなテーブルを作成します。私はそれを行うことができますが、私はそれを行うには、水平のマネージャーに焦点を当てる場合は、水平のマネージャーのすべてのコンポーネントは私がこれを行う方法を知らない同じ色を与える必要がありますしたい。 4.5下でBlackberryは、水平マネージャーフォーカスで子フィールドの色を変更します。

答えて

3

あなたの場合、Horizo​​ntalFieldManagerを拡張し、色のプロパティを追加し、ペイントイベントにそれを使用し、フォーカスの変更に無効:

class Scr extends MainScreen { 
HorizontalFieldManager mMainPanel; 
VerticalFieldManager mVerticalPanel; 

public Scr() { 
    mMainPanel = new HorizontalFieldManager(); 
    add(mMainPanel); 

    mVerticalPanel = new VerticalFieldManager(USE_ALL_HEIGHT 
    | USE_ALL_WIDTH); 
    mMainPanel.add(mVerticalPanel); 
    for (int i = 0; i < 5; i++) { 
    HFMHighlight hfm = new HFMHighlight(); 
    hfm.setHightlightColor(Color.GRAY); 
    hfm.add(new LabelField("Label " + i, FIELD_LEFT)); 
    hfm.add(new BasicEditField(FIELD_RIGHT)); 
    mVerticalPanel.add(hfm); 
    } 
} 
} 

class HFMHighlight extends HorizontalFieldManager { 

int mHColor = -1; 

public void setHightlightColor(int color) { 
    mHColor = color; 
} 

protected void onFocus(int direction) { 
    invalidate(); 
    super.onFocus(direction); 
} 

protected void onUnfocus() { 
    invalidate(); 
    super.onUnfocus(); 
} 

public void paint(Graphics graphics) { 
    if (-1 != mHColor && isFocus()) { 
    graphics.setBackgroundColor(mHColor); 
    graphics.clear(); 
    } 
    super.paint(graphics); 
} 
} 

あなたの場合4.6以降で、VISUAL STATEのFOCUSためsetBackgroundを使用します。

class Scr extends MainScreen { 
    HorizontalFieldManager mMainPanel; 
    VerticalFieldManager mVerticalPanel; 

    public Scr() { 
     RadioInfo.isDataServiceOperational(); 
     CoverageInfo.isOutOfCoverage(); 
     WLANInfo.getWLANState(); 

     mMainPanel = new HorizontalFieldManager(); 
     add(mMainPanel); 
     mVerticalPanel = new VerticalFieldManager(USE_ALL_HEIGHT 
       | USE_ALL_WIDTH); 
     mMainPanel.add(mVerticalPanel); 
     for (int i = 0; i < 5; i++) { 
      HFMHighlight hfm = new HFMHighlight(Color.GRAY); 
      hfm.add(new LabelField("Label " + i, FIELD_LEFT)); 
      hfm.add(new BasicEditField(FIELD_RIGHT)); 
      mVerticalPanel.add(hfm); 
     } 
    } 
} 

class HFMHighlight extends HorizontalFieldManager { 

    public HFMHighlight(int color) { 
     Background focusedBG = BackgroundFactory.createSolidBackground(color); 
     setBackground(VISUAL_STATE_FOCUS, focusedBG); 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 
} 

そして、ここであなたが水平マネージャーがフォーカスされている場合は、すべてのコントロール(ボタン、チェックボックス、選択と編集)を強調表示したい場合はそうである:

class Scr extends MainScreen { 
    HorizontalFieldManager mMainPanel; 
    VerticalFieldManager mVerticalPanel; 

    public Scr() { 
     mMainPanel = new HorizontalFieldManager(); 
     add(mMainPanel); 
     mVerticalPanel = new VerticalFieldManager(USE_ALL_HEIGHT 
       | USE_ALL_WIDTH); 
     mMainPanel.add(mVerticalPanel); 
     for (int i = 0; i < 5; i++) { 
      HHorizontalFieldManager hfm = new HHorizontalFieldManager(); 
      mVerticalPanel.add(hfm); 
      HButtonField button = new HButtonField("btn"); 
      button.setHightlightColor(Color.GRAY); 
      hfm.add(button); 
      HCheckboxField checkbox = new HCheckboxField("chk box", false); 
      checkbox.setHightlightColor(Color.GRAY); 
      hfm.add(checkbox); 
      String choiceItems[] = { "one", "two", "three" }; 
      HObjectChoiceField dropdown = new HObjectChoiceField("choice", 
        choiceItems); 
      dropdown.setHightlightColor(Color.GRAY); 
      hfm.add(dropdown);   
      HEditField edit = new HEditField("edit", "___"); 
      edit.setHightlightColor(Color.GRAY); 
      hfm.add(edit); 
     } 
    } 
} 

class HHorizontalFieldManager extends HorizontalFieldManager { 
    public HHorizontalFieldManager() { 
     super(); 
    } 

    public HHorizontalFieldManager(long style) { 
     super(style); 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public void paint(Graphics graphics) { 
     if (isFocus()) { 
      graphics.setBackgroundColor(Color.GRAY); 
      graphics.clear(); 
     } 
     super.paint(graphics); 
    } 
} 

class HEditField extends EditField { 

    public HEditField() { 
     super(); 
    } 

    public HEditField(long style) { 
     super(style); 
    } 

    public HEditField(String label, String initialValue, int maxNumChars, 
      long style) { 
     super(label, initialValue, maxNumChars, style); 
    } 

    public HEditField(String label, String initialValue) { 
     super(label, initialValue); 
    } 

    private int mHColor = -1; 

    public void setHightlightColor(int color) { 
     mHColor = color; 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public void paint(Graphics graphics) { 
     if (-1 != mHColor && getManager().isFocus()) { 
      graphics.setBackgroundColor(mHColor); 
      graphics.clear(); 
     } 
     super.paint(graphics); 
    } 
} 

class HButtonField extends ButtonField { 

    public HButtonField() { 
     super(); 
    } 

    public HButtonField(long style) { 
     super(style); 
    } 

    public HButtonField(String label, long style) { 
     super(label, style); 
    } 

    public HButtonField(String label) { 
     super(label); 
    } 

    private int mHColor = -1; 

    public void setHightlightColor(int color) { 
     mHColor = color; 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public void paint(Graphics graphics) { 
     if (-1 != mHColor && getManager().isFocus()) { 
      graphics.setBackgroundColor(mHColor); 
      graphics.clear(); 
     } 
     super.paint(graphics); 
    } 
} 

class HCheckboxField extends CheckboxField { 

    public HCheckboxField() { 
     super(); 
    } 

    public HCheckboxField(String label, boolean checked, long style) { 
     super(label, checked, style); 
    } 

    public HCheckboxField(String label, boolean checked) { 
     super(label, checked); 
    } 

    private int mHColor = -1; 

    public void setHightlightColor(int color) { 
     mHColor = color; 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public void paint(Graphics graphics) { 
     if (-1 != mHColor && getManager().isFocus()) { 
      graphics.setBackgroundColor(mHColor); 
      graphics.clear(); 
     } 
     super.paint(graphics); 
    } 
} 

class HObjectChoiceField extends ObjectChoiceField { 
    public HObjectChoiceField() { 
     super(); 
    } 

    public HObjectChoiceField(String label, Object[] choices, 
     int initialIndex, long style) { 
     super(label, choices, initialIndex, style); 
    } 

    public HObjectChoiceField(String label, Object[] choices, 
      int initialIndex) { 
     super(label, choices, initialIndex); 
    } 

    public HObjectChoiceField(String label, Object[] choices, 
      Object initialObject) { 
     super(label, choices, initialObject); 
    } 

    public HObjectChoiceField(String label, Object[] choices) { 
     super(label, choices); 
    } 

    private int mHColor = -1; 

    public void setHightlightColor(int color) { 
     mHColor = color; 
    } 

    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public void paint(Graphics graphics) { 
     if (-1 != mHColor && getManager().isFocus()) { 
      graphics.setBackgroundColor(mHColor); 
      graphics.clear(); 
     } 
     super.paint(graphics); 
    } 
} 
+0

こんにちは、ありがとう、私のコードを使用して私は私は水平のマネージャーの色を変更することはできませんコンポーネントの色を変更します。 – Kumar

+0

あなたは大歓迎です!私は、マネージャーを色分けするだけで十分だと思います。しかし、あなたが内部のすべてのフィールドを色づけしたいのであれば、あなたは正確にどのフィールドを使っているのか教えてください。事は、私がマネージャーの中のすべてのフィールドに行ったことをしなければならないということです。だから、あらゆる種類のフィールドに独自のクラスを実装する必要があります。 –

+0

私はeditfield、buttonfield、dropdownfield、checkboxfieldを使用しています。これは、マネージャー内で使用していたフィールドです。 – Kumar

関連する問題