【发布时间】:2013-09-01 19:45:22
【问题描述】:
我想显示 JLabel 但想隐藏 JFrame 边框和其他较低级别的容器,如 JPanel。 它只是 JLabel 显示在屏幕上。
我尝试了窗口透明度,但如果尝试使用窗口不透明度,以下代码会隐藏所有内容。 在降低 windowOpacity 时,甚至 JLabel 也会变得模糊。我也尝试过使用 JPanel,但无法获得准确的输出。 我只想要 jdk1.6 中的这种行为 我希望 JLabel 内容正确可见,不会影响不透明度,但背景必须是纯透明的。
public class TEST {
public static void main(String[] args) {
JFrame frame = new JFrame("Sanjaal Corps - Windows On Top Demo!");
frame.setSize(400, 100);
frame.setLocation(100, 150);
com.sun.awt.AWTUtilities.setWindowOpacity(frame,0.4f);
frame.setUndecorated(true);
frame.add(new JLabel("TESTING"));
frame.setAlwaysOnTop(true);
frame.setVisible(true);
}
}
我尝试了提供的解决方案 http://www.dreamincode.net/forums/topic/140041-make-a-jpanel-transparent-to-see-the-desktop-behind/
但是这里的问题是如果我们最小化或最大化窗口,然后设置一个恒定的颜色,所以发现它不是最好的解决方案,或者说是完美的解决方案。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
我在 main 里面添加了所有内容,所以现在粘贴整个类
-
com.sun.awt.AWTUtilities那很脆弱。你说.. “我只希望在 jdk1.6 中出现这种行为” ..但这在非 Oracle JRE 中不起作用。顺便说一句 - 为什么是 JDK 而不是 JRE?你的用户有JDK吗? -
抱歉选错了词,我的意思只是 jre,是的,我同意 jre1.6 的 rt.jar 限制了访问,但我只是想看看这种行为并想解释一下我的实际情况想。我也尝试过使用 AlphaComposite,但无法满足确切的要求
-
你为什么要浪费我的时间?
Exception in thread "main" java.awt.IllegalComponentStateException: The frame is decorated那个代码是垃圾,它不是你运行的任何代码。我重复一遍,为了尽快获得更好的帮助,请发布SSCCE。 SSCCE 应该包括导入,并在此处显示与在此处相同的行为。此外,为了透明,忽略那些(被诅咒的)com.sun类并查看How to Create Translucent and Shaped Windows 中看到的公共 API 或..
标签: java swing jframe transparency jlabel