SWT Composite максимальный размер

У меня есть ScrolledComposite, содержимое которого усекается. У меня есть Google, и я знаю, что это известная проблема в Windows.

Единственный предложенный обходной путь, который я могу найти, - это использовать функциональность canvas.scroll.

Учитывая возраст проблемы, мне было интересно, есть ли лучший обходной путь?

Спасибо!

(РЕДАКТИРОВАТЬ: На момент написания статьи ссылка была: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet48.java?view=markup&content-type=text%2Fvnd.viewcvs-markup&revision=HEAD)

1 ответ

(ссылка, которую вы разместили, выдает ошибку 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);
    }
}

Надеюсь это поможет!

Изменить: вау, я не заметил дату ОП. Надеюсь, это поможет кому-то в любом случае...

Другие вопросы по тегам