【问题标题】:Blackberry - get all child fields of controlBlackberry - 获得所有子域的控制权
【发布时间】:2009-08-31 12:58:27
【问题描述】:

我有一个水平字段管理器,我在运行时添加了一些组件。我想知道哪些是我放置在水平字段管理器中的组件。谁能告诉我如何找到哪些组件存在于其中水平现场经理。 问候, s.kumaran。

【问题讨论】:

    标签: user-interface blackberry


    【解决方案1】:

    +1 Jan,但是内部经理呢?一些递归会做这件事。

    class Scr extends MainScreen implements FieldChangeListener {
        HorizontalFieldManager mMainPanel;
        VerticalFieldManager mVerticalPanel;
        ButtonField mPrintButton;
    
        public Scr() {
            add(new LabelField("Title", FIELD_HCENTER));
            mMainPanel = new HorizontalFieldManager();
            add(mMainPanel);
            mVerticalPanel = new VerticalFieldManager();
            mMainPanel.add(mVerticalPanel);
            for (int i = 0; i < 5; i++) {
                HorizontalFieldManager hfm = new HorizontalFieldManager();
                hfm.add(new LabelField("Label " + i, FIELD_LEFT));
                hfm.add(new BasicEditField(FIELD_RIGHT));
                mVerticalPanel.add(hfm);
            }
            mPrintButton = new ButtonField("Print Console All Fields",
                    ButtonField.CONSUME_CLICK | FIELD_HCENTER);
            mPrintButton.setChangeListener(this);
            add(mPrintButton);
        }
    
        private Field[] getAllFields(Manager manager) {
            int cnt = manager.getFieldCount();
            Field[] result = new Field[cnt];
    
            for (int i = 0; i < cnt; i++) {
                Field field = manager.getField(i);
                result[i] = field;
    
                if (field instanceof Manager) {
                    Field[] childFields = getAllFields((Manager) field);
                    result = appendArray(result, childFields);
                }
            }
            return result;
        }
    
        private Field[] appendArray(Field[] target, Field[] source) {
            for (int i = 0; i < source.length; i++) {
                Arrays.add(target, source[i]);
            }
            return target;
        }
    
        public void fieldChanged(Field field, int context) {
            if (mPrintButton == field) {
                Field[] fields = getAllFields(getMainManager());
                for (int i = 0; i < fields.length; i++) {
                    System.out.print("\nN " + i + "; Class: "
                            + fields[i].getClass().getName());
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      这样的事情应该可以工作:

      public Field[] getFieldsOfManager(Manager manager) {
          Field[] fields = new Field[manager.getFieldCount()];
          for( int i = 0; i < manager.getFieldCount(); i++ )
          {
              fields[i] = manager.getField( i );        
          }
          return fields;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-09
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        相关资源
        最近更新 更多