【发布时间】:2013-06-22 07:16:53
【问题描述】:
所以这个问题的初始设置是有一个 JDialog,在里面我放置了一个 JPanel 来容纳其余的组件(因为绘制 JDialog 本身显然是一个坏主意)。这个 JPanel 有一个重写的 paintComponent(Graphics g) 方法,它只绘制背景并添加一个微弱的边框以达到美感。
现在里面是一系列 JPanel,它们对包含的表单组件进行分类,每个 JPanel 也有一个覆盖的 paintComponent(Graphics g),绘制一个半透明的背景。
在每个 JPanel 中,我开始遇到一些问题,大概是透明度问题。我在这些面板中有 JTextFields、JCheckBoxes、JLabels、JSlider 等,当您与其中一个交互(悬停、单击等)时,背景从透明变为不透明,偶尔会出现来自另一个字段的重影图像(看起来有点随机有时)。我使用的是custom LAF called Web,但我使用其他内置 LAF 进行了测试,同样的事情发生了。
这是 Java 的故障还是我搞砸了?如果是这样,我该如何修补?如有必要,我可以稍后粘贴代码片段,但我使用了几个自定义类和九个补丁样式的图像拼接,这可能会使代码片段难以遵循。提前致谢!
【问题讨论】:
-
确保正在绘制透明度的组件已设置为透明(setOpaque(false)),这将使重绘管理器知道它必须绘制它背后的内容
-
另外,非常重要的是,在进行任何自定义绘画之前,请确保您已致电
super.paintComponent -
如需尽快获得更好的帮助,请发帖SSCCE。
-
你先生(@MadProgrammer)是非常正确的。如果您愿意将您的建议外化为答案,我会接受!非常感谢!
标签: java swing jpanel transparency look-and-feel