Показать сообщение отдельно
Старый 18.07.2005, 00:42
Pigeon вне форума Посмотреть профиль Отправить личное сообщение для Pigeon Найти все сообщения от Pigeon
  № 6  
Ответить с цитированием
Pigeon

Регистрация: Jul 2005
Сообщений: 8
а это, случайно, не поэтому
Цитата:
Я пытаюсь изменить свойства _x / _y / ряд других компонента ComboBox, но ничего визуально не меняется! Трейс выводит, что все поменялось! Как быть?

Почитайте Using Components, главу Creating Components, и вам станет ясно, в чем дело. Компоненты версии 2 сильно инкапсулированы и всегда наследуют у одного из двух корневых классов: UIObject / UIComponent. При этом при изменении любого getter-setter-а перерисовка откладывается методом invalidate(), наследуемым у UIObject. Invalidate просто вызывает private метод, который заставляет компонент при следующей смене кадра перерисоваться, поэтому трейсы и выводят вам все, как вы хотите. Но есть одно большое НО: для таких сложных компонентов, как ComboBox, внутри проводится масса проверок и именно это сводит ваши действия на нет.

Выходов два: пользоваться методом move(), который есть у любого UI компонента, либо использовать листнеры и следить за событием draw (о нем можно посмотреть в хелпе, статья UIObject.draw).