繁体   English   中英

创建一个圆形的JFrame / ContentPane

[英]Create a rounded JFrame / ContentPane

我正在用Java创建带有圆角的登录窗口。 一切正常,请参见图片,但是我在使JFrame / ContentPane透明化方面遇到了挑战。 我似乎无法删除每个角上的白色区域(如箭头所示),因为我无法将JFrame或ContentPane的opague设置为false。

关于如何清除这些白色区域的任何想法 替代文字

从Java 1.3开始,有一个技巧可以使窗口部分透明,或者使窗口淡入(我通常将其用于启动屏幕)或特殊的FX(例如阴影):

  • 在打开窗口之前,以编程方式拍摄窗口所在区域的屏幕截图(使用java.awt.Robot.createScreenCapture())
  • 将屏幕快照设置为根容器的背景(JPanel带有自定义paintComponent()例程)
  • 现在,您可以添加各种透明组件,或在背景顶部绘制另一个半透明图像。

使用此技术创建具有半透明阴影的窗口的示例: http : //www.eclipsezone.com/eclipse/forums/t17720.html

对您的帮助不大,但是Java7将支持透明和成形的窗口: 此处提供更多信息 这些已在Java 6u10中提供,但尚未公开,即,您需要使用不受支持的com.sun ...类,该类将来可能会更改并破坏您的程序。

尝试这个。 是工作 :)

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));
                }
            });

JFrame是重量级组件,因此无法使其透明。 只有轻量级的组件(如JWindow)才能透明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM