Blackberry - видимость ButtonField в зависимости от фокуса LabelField - PullRequest
1 голос
/ 14 января 2010

У меня в пользовательском интерфейсе 3 поля, 2 кнопки, одно сверху, а другое на нижней части поля метки ... когда поле метки оказывается в фокусе, я хочу, чтобы кнопки появлялись, и я должен иметь возможность нажимать на них.... и когда поле метки теряет фокус, кнопки должны исчезнуть ... как я могу это сделать ...

1 Ответ

2 голосов
/ 14 января 2010

поместите некоторое поле менеджера в качестве заполнителя в положение кнопки, затем добавьте FocusChangeListener для маркировки и используйте add / delete field на focusChanged чтобы показать / скрыть кнопку.

UPDATE
Поскольку каждое изменение фокуса в полях может изменить макет, лучше добавить прослушиватель в каждое поле, добавленное на экран и заполнитель:

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);
            }
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...