Java中JFrame如何实现圆角?

10

我有一个用于应用程序登录的JFrame,我想通过几个像素来使框架的角变圆。

我不想在JFrame上使用透明度并且不想使用JPanel内部的背景图片 - 这种做法可行吗?

2个回答

18

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

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

10

试试这个。它有效的:)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接