黑莓 - 取决于焦点的LabelField知名度ButtonField字段 [英] Blackberry - ButtonField visibility depending on LabelField focus

查看:124
本文介绍了黑莓 - 取决于焦点的LabelField知名度ButtonField字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的UI 2个按钮3场,一个在顶部,另一个在标签领域的BUTTOM ......当过标签字段获得焦点我想要的按钮出现,我应该可以点击它们。 ..和当标签字段失去焦点的按钮应该disappears..how我可以做到这一点...

I have 3 fields in my ui 2 buttons, one on top and other on buttom of a label field...when ever the label field gets focus i want the buttons to appear and i should be able to click on them...and when the label field loses focus the buttons should disappears..how can i do this...

推荐答案

把一些经理字段作为在按钮位置的占位符,然后添加一个<一个href=\"http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/ui/FocusChangeListener.html\"相对=nofollow> FocusChangeListener 来标记和使用<一个href=\"http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/ui/Manager.html#add%28net.rim.device.api.ui.Field%29\"相对=nofollow>添加 / <一个href=\"http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/ui/Manager.html#delete%28net.rim.device.api.ui.Field%29\"相对=nofollow>删除场的<一个href=\"http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/ui/FocusChangeListener.html#focusChanged%28net.rim.device.api.ui.Field,%20int%29\"相对=nofollow> focusChanged 显示/隐藏按钮。

put some manager field as a placeholder at button position, then add a FocusChangeListener to label and use add/delete field on focusChanged to show/hide button.

更新结果
因为从领域的每一个焦点变化可能会改变布局,认为其最好添加监听器,每一个领域添加到屏幕和占位符:

UPDATE
Since every focus change from fields may change layout, think its better to add listener to every field added to screen and placeholder:

class Scr extends MainScreen {
    HorizontalFieldManager placeholder = new HorizontalFieldManager() {
        public void add(Field field) {
            if (field.getFocusListener() != null)
                field.setFocusListener(null);
            field.setFocusListener(focusListener);
            super.add(field);
        }
    };
    ButtonField buttonField = new ButtonField("button",
            ButtonField.CONSUME_CLICK);
    LabelField labelField = new LabelField("label", FOCUSABLE);

    public Scr() {
        add(placeholder);
        add(labelField);
        add(new LabelField("label2", FOCUSABLE));
    }

    public void add(Field field) {
        if (!(field instanceof Manager)) {
            if (field.getFocusListener() != null)
                field.setFocusListener(null);
            field.setFocusListener(focusListener);
        }
        super.add(field);
    }

    FocusChangeListener focusListener = new FocusChangeListener() {
        public void focusChanged(Field field, int eventType) {
            if (eventType == FOCUS_GAINED) {
                if (field == labelField) {
                    if (buttonField.getManager() == null)
                        placeholder.add(buttonField);
                } else if (field != buttonField)
                    placeholder.delete(buttonField);
            }
        }
    };
}

这篇关于黑莓 - 取决于焦点的LabelField知名度ButtonField字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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