Java 使透明的JFrame具有可见的边框

Java 使透明的JFrame具有可见的边框,java,window,transparent,Java,Window,Transparent,我试图创建一个透明的JFrame,即一个内部完全透明的窗口,而边框(带有关闭按钮的顶部栏)则可见。我尝试创建一个新的Jpanel,然后使用panel.setOpaque(false),但它没有帮助 我对swing和Java GUI非常陌生,希望得到一些帮助。你想做的是可能的,但不是你想象的那样 如果您想要标准操作系统的窗口装饰(即窗口边框、关闭、最大化、最小化按钮),这是不可能的。透明度不能应用于“装饰”框架 但是,这可以通过使用Java的默认窗口装饰来实现。请尝试以下代码: public st

我试图创建一个透明的
JFrame
,即一个内部完全透明的窗口,而边框(带有关闭按钮的顶部栏)则可见。我尝试创建一个新的
Jpanel
,然后使用
panel.setOpaque(false),但它没有帮助


我对swing和Java GUI非常陌生,希望得到一些帮助。

你想做的是可能的,但不是你想象的那样

如果您想要标准操作系统的窗口装饰(即窗口边框、关闭、最大化、最小化按钮),这是不可能的。透明度不能应用于“装饰”框架

但是,这可以通过使用Java的默认窗口装饰来实现。请尝试以下代码:

public static void main(String[] args) {
    JPanel panel = new JPanel() {
        @Override
        protected void paintComponent(Graphics g) {
            g.setColor(Color.RED);
            g.drawRect(32,32,32,32);
        }
    };

    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame f = new JFrame();
    f.add(panel);
    f.setSize(256,256);

    // The following two statements cause the window-transparency:
    f.setUndecorated(true);
    f.setBackground(new Color(0,255,0,0));

    f.setVisible(true);
}

我个人不觉得Java窗口装饰很好看。。。除此之外,特定于操作系统的功能(如窗口的快照功能,通过将窗口移动到屏幕一侧来“半最大化”窗口)不起作用。。。对我来说,这是一个交易破坏者,但根据您的需要,这可能是一个可接受的解决方案。:)

根据我的经验…这不可能做到…很容易…可能是重复的