我正在尝试创建一个ScrollPane,其中包含一个透明背景的JPanel(或者在RGBA中几乎透明:0,0,0,150)。问题是当我向下/向上滚动JViewPort重绘时。但它没有重新绘制父节点,这种情况发生在几毫秒之后。因此,在几毫秒内,我看到了scrollview内滚动视图周围的所有按钮。有没有修复?或者是否可以覆盖视口的重绘方法以重新绘制整个屏幕?
我的代码:
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();
答案 0 :(得分:1)
具有透明背景的JPanel(或在RGBA中几乎透明:0,0,0,150)。
Swing没有正确绘制透明组件,所以这可能就是这个问题。 Swing期望组件是不透明的或不透明的(在这种情况下,父组件首先被绘制以去除绘制工件)。
查看Backgrounds With Transparency以获取更多信息和可能的解决方案。