【发布时间】:2015-09-29 11:42:41
【问题描述】:
我有一个包含 JPanel 的 JFrame。我想让框架完全透明,面板稍微透明。
我正在使用以下代码:
frame.setBackground(new Color(0, 0, 0, 0));
panel.setBackground(new Color(51, 51, 51, 190));
达到了预期的效果,但是,当我使用此方法使 JFrame 透明时,它会扭曲所有其他组件。
下图比我能解释的更好。
左边是一个没有透明度的例子,文字清晰。右边的面板和框架是用上面的代码设置的,文字是扭曲的。
我错过了什么?
【问题讨论】:
-
不要在组件中使用基于 alpha 的颜色(对框架有效),相反,您需要使用 setOpaque(false) 并覆盖面板的 paintComponent 方法并伪造它
-
当 MadProgrammer 的解决方案无济于事时,可能要显式关闭字体抗锯齿功能。之前调用 super.paintComponent 左右
Graphics2D.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); -
只有在我将颜色应用到框架时才会出现这种情况,并且只有在透明度小于255时才会出现这种情况。无论我是否将其应用到面板上,文本仍然会扭曲。我可以使用 frame.setBackground(new Color(0, 0, 0, 255)) ,这很好。我可以使用 panel.setBackground(new Color(0, 0, 0, 0)) ,这很好。一旦我使框架透明(例如使用 frame.setBackground(new Color(0, 0, 0, 254))),它就会扭曲。
-
这实际上是一个 JDialog,而不是 JFrame - 抱歉。这有什么变化?
标签: java swing jframe transparency