0

例如,除了应用程序周围的默认操作系统容器之外,您还可以有一些自定义的东西,比如下面的这个 swing 项目。

在此处输入图像描述

4

2 回答 2

4

主机操作系统拥有框架装饰,但您可以创建半透明和异形窗口并使用,如此Frame#setUndecorated()所示。

于 2014-03-15T23:18:22.020 回答
4

您可以在具有透明背景的未装饰框架上使用透明图像:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TransparentImageFrame
{
    private static void createAndShowUI()
    {
        JLabel label = new JLabel( new ImageIcon("...") );
        label.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e)
            {
                if (e.getClickCount() == 2)
                {
                    System.exit(0);
                }
            }
        });

        JFrame frame = new JFrame("Image Frame");
        frame.setUndecorated(true);
        frame.setBackground(new Color(0, 0, 0, 0));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add( label );
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

鼠标只会响应您使用的任何图像中的非透明像素。

于 2014-03-15T23:32:03.010 回答