0

我正在尝试创建一个 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();
4

1 回答 1

1

具有透明背景的 JPanel(或在 RGBA 中几乎透明:0、0、0、150)。

Swing 没有正确绘制透明组件,所以这可能是这个问题。Swing 期望组件是不透明或不透明的(在这种情况下,首先绘制父组件以移除绘制伪影)。

查看具有透明度的背景以获取更多信息和可能的解决方案。

于 2017-07-13T18:35:50.520 回答