Контейнер принимает событие кнопки в blackberry

#blackberry

#ежевика

Вопрос:

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

 GridFieldManager startStopButtonContainer = new GridFieldManager(2,Field.FIELD_HCENTER);
startStopButtonContainer.add(slideRestart);
startStopButtonContainer.add(slideStop);
add(startStopButtonContainer);
  

теперь я нажимаю на slideRestart, он работает нормально, но когда я нажимаю за пределами кнопки, тогда также происходит событие.

Пожалуйста, помогите мне …:)

Комментарии:

1. Являются ли кнопки slideRestart и slideStop пользовательскими?

2. да, это пользовательские кнопки. Я попробовал getfieldatlocation, но это не работает

3. Вы переопределяете TouchEvent ()? Если это так, убедитесь, что вы возвращаете false, когда вы ничего не делаете с касанием, иначе фокус не переместится

Ответ №1:

Добавьте nullfield в начале и в конце каждой строки GridFieldManager.И задает поле стиля.Non_FOCASABLE для этого nullfields.И установите фокус по умолчанию в поле кнопки.

Примечание: поля с нулевыми значениями должны покрывать оставшуюся часть GridFieldManager.

вы можете использовать

  LabelField field = new LabelField("   ",Field.NON_FOCUSABLE)
        {
            protected void layout(int width, int height) 
            {
                // TODO Auto-generated method stub
                super.layout(width, height);
                setExtent((Display.getWidth()-(buttonField.getPreferredWidth() buttonField.getPreferredWidth())/2, height);
            }
        };
  

как nullfield.