Java Swing ViewPort Lagling Lags

Я пытаюсь создать ScrollPane, который содержит JPanel с прозрачным фоном (или почти прозрачным в RGBA: 0, 0, 0, 150). Проблема в том, что когда я прокручиваю вниз / вверх перерисовки JViewPort. Но он не перерисовывает родителя, что происходит через несколько миллисекунд. Поэтому в течение нескольких миллисекунд я вижу все кнопки вокруг прокрутки внутри прокрутки. Есть ли решение для этого? Или возможно переопределить метод перерисовки для окна просмотра, чтобы перекрасить весь экран?

Мой код:

    scrollView = new JScrollPane(content);
    scrollView.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
    scrollView.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    scrollView.getVerticalScrollBar().setUI(new ScrollBar());
    scrollView.getVerticalScrollBar().setUnitIncrement(1);
    scrollView.setBorder(null);
    scrollView.setViewportBorder(null);
    scrollView.setBounds(20, 20, W - 40, H - 40);
    scrollView.setPreferredSize(new Dimension(W - 40, H - 40));
    add(scrollView, 0);
    parentScreen.repaint();

1 ответ

JPanel с прозрачным фоном (или почти прозрачный в RGBA: 0, 0, 0, 150).

Swing не рисует прозрачные компоненты должным образом, так что это может быть этой проблемой. Swing ожидает, что компонент будет непрозрачным или непрозрачным (в этом случае родительский компонент будет окрашен первым, чтобы удалить артефакты рисования).

Проверьте Backgrounds With Transparency для получения дополнительной информации и возможных решений.

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