【问题标题】:Make transparent JFrame with visible borders使用可见边框制作透明 JFrame
【发布时间】:2013-09-20 06:40:59
【问题描述】:

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

我对 Swing 和 Java GUI 非常陌生,很想得到一些帮助。

【问题讨论】:

标签: java window transparent


【解决方案1】:

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

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

但是,这可以通过使用 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 窗口装饰看起来很漂亮...除此之外,特定于操作系统的功能(例如通过将窗口移动到屏幕一侧将窗口“半最大化”的 Window 的 Snap 功能) )不工作......对我来说,这是一个交易破坏者,但根据您的需要,它可能是一个可以接受的解决方案。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2011-01-31
    • 2016-12-04
    • 2013-04-08
    • 2013-10-31
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多