我使用的是 Java 6。
我希望下面的代码可以显示一个透明的窗口。但它仍然显示一个白色背景的正常窗口。为什么?我认为如果我隐藏所有 Pane ,它应该给我一个透明的窗口,这是合乎逻辑的。
package MaskingEffect;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class GlassMaskTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
GlassMaskFrame frame=new GlassMaskFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setVisible(false);
frame.getLayeredPane().setVisible(false);
frame.getRootPane().setVisible(false);
frame.getGlassPane().setVisible(false);
frame.setVisible(true);
//AWTUtilities.setWindowOpacity(frame, 0.1f);
}
});
}
}
这是GlassMaskFrame
:
package MaskingEffect;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
import com.sun.awt.AWTUtilities;
import com.sun.xml.internal.ws.api.server.Container;
public class GlassMaskFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public GlassMaskFrame() {
this.setSize(new Dimension(500, 600));
}
}
我还尝试为 4 个 Pane 中的每一个setBackground(new Color(0,0,0,0))
。但仍然没有得到透明的窗口。
我不想使用 AWTUtilities.setWindowOpacity()
方法。
这就是我得到的:
最佳答案
将框架的背景颜色设置为
<frame-name>.setBackground(new Color(0, 0, 0, 0));
并设置内容 Pane 或您正在使用的任何内容的不透明度...
<content-pane-name>.setOpaque(false);
这可能会起作用......
关于java - 为什么 JFrame 仍然不透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743715/