8

我的应用程序有一个登录 JFrame,我想让框架的角由几个像素变圆。

我想这样做而不在 JFrame 上使用透明度并且必须在 JPanel 内使用背景图像 - 这可能吗?

4

2 回答 2

15

未装饰的框架是可能的,请考虑以下示例:

JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setShape(new RoundRectangle2D.Double(10, 10, 100, 100, 50, 50));
frame.setSize(300, 200);
frame.setVisible(true);

此代码适用于 Java 7。对于 Java 6(自更新 10 起),您可以使用以下代码执行相同操作AWTUtilities.setWindowShape

JFrame frame = new JFrame();
frame.setUndecorated(true);
AWTUtilities.setWindowShape(frame, new RoundRectangle2D.Double(10, 10, 100, 100, 50, 50));
frame.setSize(300, 200);
frame.setVisible(true);
于 2013-09-21T18:15:12.753 回答
9

尝试这个。有用 :)

yourframe.setUndecorated(true);
yourframe.setBackground(new Color(0, 0, 0, 180));
yourframe.addComponentListener(new ComponentAdapter() {
               @Override
                public void componentResized(ComponentEvent e) {
                    setShape(new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), 80, 80));
                }
            });
于 2015-03-08T09:08:57.290 回答