黑莓 - 得到控制的各个子领域 [英] Blackberry - get all child fields of control

查看:145
本文介绍了黑莓 - 得到控制的各个子领域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个水平场经理我添加在运行再寄一次某些组件想知道这是我已经放在horizo​​ntalfieldmanager.Can的组件的任何人给我的想法如何找到它们的成分是present水平场经理。
问候,
s.kumaran。

I am having one horizontal field manager i am adding some components at run time.I want to know which are the components i have placed in the horizontalfieldmanager.Can any one give me idea how to find which are the components are present in horizontal field manager. regards, s.kumaran.

推荐答案

+1扬,但对于内部管理者?有些递归会做的事情。

+1 Jan, but what about inner Managers? Some recursion will do the thing.

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());
    		}
    	}
    }
}

这篇关于黑莓 - 得到控制的各个子领域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆