JViewport.BACKINGSTORE_SCROLL_MODE и setOpaque (false) - PullRequest
2 голосов
/ 18 января 2012

У меня проблема с прозрачностью / прокруткой на панели прокрутки.Насколько я могу судить, документы не обращаются к этому поведению.

Вот код для моей прозрачной текстовой панели:

    textArea.setOpaque(false);
    scrollPane.setViewportView(textArea);
    scrollPane.setViewportBorder(border);
    scrollPane.setOpaque(false);
    //scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
    scrollPane.getViewport().setOpaque(false);

Это работает хорошо, за исключением того, что прокрутка очень вялая,Когда строка setScrollMode не закомментирована, прокрутка гораздо более отзывчива, но прозрачность теряется.

Есть ли какой-нибудь способ, которым я могу попасть в беспроигрышную ситуацию?На первоначальный вопрос на самом деле не было ответа, но я узнал, что причиной был звонок javax.swing.UIManager.put("TabbedPane.font", someCustomFont).Я пропустил эту деталь, потому что думал, что это не имеет значения .. кто бы мог подумать.Я не знаю, почему это приводит к медленной прокрутке, но я просто рад, что нашел проблему.

1 Ответ

2 голосов
/ 18 января 2012

1) JViewport по умолчанию traslucent/transparent,

2) обязательный набор следующих методов для JViewpot

JViewport.setScrollMode(JViewport.BLIT_SCROLL_MODE);
JViewport.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
JViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

3) простой пример здесь , без каких-либо заморозок или прыжков при прокрутке

...