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

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

5 голосов
/ 27 сентября 2010

У меня есть 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 Ответ

3 голосов
/ 22 февраля 2011

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

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

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

...