我正在创建一个带圆角的登录窗口。一切都很好,请参阅图片,但我遇到了使JFrame / ContentPane透明化的挑战。每个角落都有白色区域(箭头所示),我似乎无法删除,因为我无法为JFrame或ContentPane将opague设置为false。
答案 0 :(得分:2)
从Java 1.3开始,有一个技巧可以让部分透明的窗口或窗口淡入(我通常将它用于我的启动画面),或特殊的FX(如阴影):
使用此技术创建具有半透明阴影的窗口的示例: http://www.eclipsezone.com/eclipse/forums/t17720.html
答案 1 :(得分:2)
对你没什么帮助,但Java7将支持透明和形状的窗口:More info here。这些已在Java 6u10中提供,但不是公开的,即,您需要使用不受支持的com.sun ...类,以后可能会更改并破坏您的程序。
答案 2 :(得分:1)
试试这个。它的工作:))
yourframe.setBackground(new Color(0, 0, 0, 180));
yourframe.setUndecorated(true);
yourframe.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
setShape(new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), 80, 80));
}
});
答案 3 :(得分:0)
JFrame无法透明,因为它是一个重量级组件。只有轻量级组件(如JWindow)才能变得透明。