JScrollPane中的透明JEditorPane在后台JPanel上

时间:2011-06-16 16:20:29

标签: java swing transparent jeditorpane

如果我移动JScrollPane使其位于JPanel的前面并部分覆盖JPanel,则JScrollPane内的JEditorPane会出现绘制问题。它没有正确地重新绘制JPanel的背景。因此,滚动时最终会出现屏幕绘制问题。

我已尝试使用以下方法进行重叠 - JPanel中的JScrollPane - 使用FreeLayout(NetBeans GUI Builder)部分覆盖JPanel的JScrollPane - JScrollPane使用JLayeredPane部分覆盖JPanel

JPanel现在有一个坚实的背景,但是只要我有扎实的背景就可以将它扩展为渐变。

如何让JEditorPane从JPanel中获取裁剪后的背景?

我使用jEditorPane.setBackground(new Color(0,0,0,0))

使其透明化

我尝试使用setOpaque(false),就像你对某个面板所做的那样,但是如果你对JEditorPane这样做,那似乎就会放回默认背景。

  

同事的原始问题:   https://stackoverflow.com/questions/6364460/jframe-screen-paint-issues-when-using-transparency

最初的问题写得不是很好,似乎没有带来好的答案。

对同事问题的回应 建议:

  • “尝试使用setOpaque(false);而不是setBackground(new Color(0,0,0,0));” 没有解决问题。
  • “在pack()之后尝试添加validate()”无法解决问题。
  • “在JViewport上绘制背景图像”无效,因为 背景需要超越 JScrollView也落后了 其他组件
  • “在UI委托的paint()中修改图形复合”如果这样可以解决问题,我想知道该怎么做。

1 个答案:

答案 0 :(得分:5)

Background Panel类的代码会尝试使所有组件都不透明,以便后台显示。

编辑:

如果您想使用透明背景,那么您可以查看Backgrounds With Transparency以获取问题的解释和一些解决方案。

在这种情况下,BackgroundPane是更容易的解决方案。