(ссылка, которую вы разместили, дала ошибку 400)
Не уверен, что моя проблема была такой же, но я также столкнулся с проблемой усечения с помощью ScrolledComposite. Проблема заключалась в том, что когда я изменил размер Composite для прокрутки и полоса прокрутки стала видимой, элементы управления не учитывали пространство, занимаемое полосой прокрутки. Чтобы решить эту проблему, я добавил своего рода рекурсивный фрагмент кода в свой прослушиватель Resize на прокручиваемом композите:
После того, как вы установили размер композитного контента, проверьте, стала ли видимой полоса прокрутки scrolledComposite (например, getVerticalBar()). Если это так, отправьте новое событие Resize вашему слушателю. Вот фрагмент моего кода...
public void handleEvent(Event event)
{
int newWidth = scrolledComposite.getSize().x;
boolean hasScroll = false;
ScrollBar scrollBar = scrolledComposite.getVerticalBar();
if (scrollBar.isVisible())
{
hasScroll = true;
newWidth -= scrolledComposite.getVerticalBar().getSize().x;
}
newWidth -= 8;
Point size = contentComposite.computeSize(newWidth, SWT.DEFAULT);
contentComposite.setSize(size);
int scroll_multiplier = size.y / 50;
scrollBar.setIncrement(scroll_multiplier);
/**
* If the scroll bar became visible because of the resize, then
* we actually need to resize it again, because of the scroll
* bar taking up some extra space.
*/
if (scrollBar.isVisible() && !hasScroll)
{
scrolledComposite.notifyListeners(SWT.Resize, null);
}
}
Надеюсь это поможет!
Редактировать: вау, я не заметил дату ОП. Надеюсь, это в конечном итоге поможет кому-то в любом случае...
person
Dylan
schedule
22.02.2011