Java在JFrame上圆角?

时间:2013-09-21 17:36:11

标签: java swing jframe rounded-corners

我的应用程序有一个登录JFrame,我想让框架的角落四舍五入。

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

2 个答案:

答案 0 :(得分:11)

对于未修饰的框架,可以考虑以下示例:

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

答案 1 :(得分:4)

试试这个。它的工作:))

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