我有一个JFrame的子类(它包含JButton,Title和Jpanel),我添加了一个JPanel。 Jpanel占据了borderlayout的中心部分。我想让JPanel变得透明(它应该可以看到Frame窗口)。如何将非透明组件添加到java 1.5中的透明JFrame?
正如我为Java 1.5所做的那样,我使用了JFrame.setOpacity(0.0f)来设置Jframe的透明度。通过这样做,JFrame的所有组件(即按钮,标题和jPanel)都使用相同的Alpha级别。但我只想让JPanel变得透明。
我用JLayeredPane通过改变Z顺序来尝试使用相同的结果。
我打开使用外部库如JNA(JNA windowsUtil也做同样的setOpacity()方法)和使用java7或java6类作为外部库到我的应用程序。
我甚至经历了一些以前问有没有帮助的问题:
Opaque components on transparent Java windows
Java: Transparent Windows with non-transparent components?
Re-paint on translucent frame/panel/component.
如果您使用JNA实用程序,您可以*通过在窗口上设置一个alpha遮罩来指示所需的不透明度,从而获得所需的效果,然后将非透明位置于原始的重量级组件中窗口。这项工作是否在很大程度上取决于透明度如何在给定平台上逐级缩小窗口层次结构。 – technomage
顺便说一句,JNA实用程序提供了设置全局窗口alpha,窗口位掩码和alpha掩码。最后一个最有可能为你正在尝试做的事情工作。你不可能得到java [67]代码来使用早期的JVM。 – technomage