2009-03-11 2 views
2

Я пишу плагин Eclipse, который имеет контроль над парения, который состоит из двух элементов управления, один поверх другого:Как определить предпочтительный размер JFace TreeViewer или SWT Tree?

HTML-просмотрщик (BrowserInformationControl), для которого я могу легко вычислить размер подсказку

TreeViewer который содержит дерево.

Я установил свое дерево с фактическим содержимым. Тем не менее, я не могу найти способ определить размер дерева или подсказку размера для него после рендеринга.

+0

Просто добавленные ссылки и альтернатива для проверки. Чтобы быть уверенным, не могли бы вы завершить свой вопрос с помощью точной версии Eclipse, которую вы используете? И предполагаемая цель (в терминах версии Eclipse)? – VonC

+0

Это будет определяться макетом, которым управляет виджет – andyczerwonka

ответ

4

Согласно API из org.eclipse.swt.widgets.Tree, это должно быть сделано с:

public Point computeSize(int wHint, 
        int hHint, 
        boolean changed) 

Предпочтительный размер элемента управления является размер, что было бы лучше всего будет отображаться в.

Символы подсказки подсказки ширины и высоты позволяют вызывающему пользователю задавать контрольные вопросы, такие как «Учитывая определенную ширину, насколько высокий элемент управления должен отображать все содержимое?»
Чтобы указать, что вызывающий объект не желает сдерживать конкретное измерение, для подсказки передается константа SWT.DEFAULT.

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


Обратите внимание, что на Windows, поведение computeSize() было испорчено: посмотреть message и это bug: исправлено для затмения 3.4M1 и вперед.

Пример использования computeSize() в this message.

Использование getBound() может быть другим interesting alternative.

+0

Это то, что я использовал ... К сожалению, это не впечатляет Eclipse, который продолжает возвращать слишком маленькую точку ... – Uri

+0

Hi VonC, спасибо за помощь в этом. Оказывается, проблема возникает только в версии Mac. Когда я запускаю его в окнах, мой код работает как шарм. Я собираюсь проверить с другим дистрибутивом Mac, так как у них есть два разных пользовательских интерфейса, которые они используют. – Uri

+0

@Uri: приятно знать. Я проверю, есть ли ошибка регистрации затмения, зарегистрированная для этого. – VonC

Смежные вопросы