【问题标题】:Transparent JEditorPane in a JScrollPane over a background JPanel在背景 JPanel 上的 JScrollPane 中的透明 JEditorPane
【发布时间】:2011-09-16 12:58:38
【问题描述】:

如果我将 JScrollPane 移动到 JScrollPane 的前面并部分覆盖 JPanel,则 JScrollPane 内部的 JEditorPane 存在绘制问题。它没有正确地重新绘制 JPanel 的背景。因此,当您滚动时,您最终会遇到屏幕绘画问题。

我已经使用以下方法尝试了重叠 - JPanel 内的 JScrollPane - JScrollPane 使用 FreeLayout (NetBeans GUI Builder) 部分覆盖 JPanel - 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,我确定我昨天看到了这个帖子。另一个帖子怎么了。人们不喜欢花时间重复已经提出的建议。
  • 查看我的编辑。我会从一开始就发布此信息,但我想保持问题简短。

标签: java swing transparent jeditorpane


【解决方案1】:

Background Panel 类的代码尝试使所有组件不透明,以便背景显示出来。

编辑:

如果你想玩透明背景,那么你可以查看Backgrounds With Transparency 以了解问题的解释和一些解决方案。

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

【讨论】:

  • 它不起作用。背景不显示,使用jEditorPane.setBackground(new Color(0,0,0,0))时仍然会出现屏幕绘画问题。
  • 它对我来说很好用。无需使用透明背景颜色。逻辑实际上是让滚动窗格、视口和编辑器窗格这3个组件不透明,这样面板的背景才能正确绘制。
  • 找到了。同事设置不透明,但没有删除背景颜色。我未能设置视口的不透明。我没有意识到视口是一个单独的元素。我们使用的是由 GUI 构建器生成的 setViewportView。不知道为什么 BackgroundPanel 没有像您预期的那样将其设置为不透明。
  • @George Bailey,实际上你有责任发布代码来证明问题。它被称为 SSCCE (sscce.org)。大多数情况下,当您将代码缩减到最低限度时,您会发现像这样的简单错误。
  • 感谢您的帮助。很抱歉给您带来麻烦。
猜你喜欢
  • 2012-10-15
  • 2013-03-03
  • 2011-02-02
  • 2012-07-27
  • 2012-07-27
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多