Функция TextField isVisible() в LWUIT не работает как аспектная.

Я работаю над приложением для мобильных устройств, используя библиотеку LWUIT. Это форма с контейнерами и компонентами. У меня есть контейнер c2, который содержит определенные элементы управления, такие как различные текстовые поля, метки и т. д. Я пытаюсь проверить его. Но в некоторых случаях проверка должна работать только с теми компонентами, которые видны на экране. Например, у меня есть ситуация, когда контейнер c2 не отображается на экране, а затем я пытаюсь проверить, виден ли он или нет, с помощью следующего кода:

System.out.println(txt_Name.isVisible());

Несмотря на то, что он не виден на экране, он по-прежнему отображается как ИСТИНА. Но я думаю, должно отображаться FALSE. Я пробовал isEnabled, но это не соответствует моему требованию. У меня закончились идеи, и последним средством было ТАК. Любая помощь будет оценена по достоинству.


person Nitesh Verma    schedule 23.10.2013    source источник


Ответы (1)


Я думаю, что метод isVisible() всегда возвращает логическое значение состояния Component. Я имею в виду, что если в интерфейсе отображается Component, он вернет true, но нет необходимости показывать Component на экране.

Если вы хотите проверить, находится ли ваш Component на экране или нет, я рекомендую вам проверить координаты вашего Component, используя getX() и getY(), и проверить, находится ли он на экране или нет. Попробуйте и расскажите нам, что у вас получилось.

person Mun0n    schedule 23.10.2013
comment
в первый раз я получил (0,0), а когда компонент был добавлен, результат был (2, 27). Но когда я снова отключил его как домашнее животное, условие, которое я все еще получил (2, 27). Может ли быть что-то, связанное с контейнером, в котором содержится компонент? - person Nitesh Verma; 23.10.2013
comment
getX() и getY() дадут вам координаты элемента... Я думаю, что это не то, что вы хотите - person Mun0n; 23.10.2013
comment
если вы используете... isFocused(), теперь вы увидите, если элемент имеет фокус приложения... и если он есть... отображается. На какой платформе вы создаете это приложение? Нокиа SDK 2? SDK 1.1? - person Mun0n; 23.10.2013
comment
SDK 1.1 — это платформа - person Nitesh Verma; 23.10.2013
comment
Метод isVisible() является геттером для метода setVisible(boolean). Это позволяет вам переключать состояние видимости, чтобы компонент не отображался. Он не предназначен для того, чтобы вы знали, отображается ли компонент на экране. Попытка проверить, находится ли контейнер на экране, вероятно, неправильный способ сделать это, я предлагаю вернуться к тому, почему вы пытаетесь это сделать и чего вы пытаетесь достичь, а затем перефразировать вопрос с учетом этой информации. - person Shai Almog; 28.10.2013