Java 什么可以用来提示半透明窗口或通知?附加的屏幕截图示例

Java 什么可以用来提示半透明窗口或通知?附加的屏幕截图示例,java,swing,notifications,keyboard,window,Java,Swing,Notifications,Keyboard,Window,什么工具可以用来重建类似的半透明窗口 我今天尝试的是一个演示示例:从Oracle使用uiswing trans_形窗口 但我得到“无法启动应用程序。” 但我得到的错误是oracle页面不存在,因此我无法检查并确认它是否按我所希望的那样工作 com.sun.deploy.net.FailedDownloadException: Unable to load resource: https://docs.oracle.com/javase/tutorialJWS/samples/uiswing/T

什么工具可以用来重建类似的半透明窗口

我今天尝试的是一个演示示例:从Oracle使用uiswing trans_形窗口 但我得到“无法启动应用程序。”

但我得到的错误是oracle页面不存在,因此我无法检查并确认它是否按我所希望的那样工作

com.sun.deploy.net.FailedDownloadException: Unable to load resource: https://docs.oracle.com/javase/tutorialJWS/samples/uiswing/TranslucentWindowDemoProject/TranslucentWindowDemo.jar
    at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

所以,如果您试图使用类似的窗口,或者对如何查找所需的库和示例有一些想法,请对此进行评论。

这里有一个小技巧

JFrame frame = new JFrame("Testing");
frame.setUndecorated(true);
frame.setBackground(new Color(0, 0, 0, 0));
现在,这将使一个完全透明的窗口,不是你想说的,但诀窍是,在窗口内放置一个组件,然后可以绘制你想要的形状,例如


看一看,了解更多细节

好把戏。鼠标点击那个窗口怎么样?我可以点击窗口后面的东西吗?简单的回答是,顺便说一句,我想做的是在屏幕中央显示这个小图像1-2秒,这样它就可以工作了。看看Swing Timer。如果你真的很聪明,你可以使用定时器来淡出使用AlphaComposite的组件
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Popup {

    public static void main(String[] args) {
        new Popup();
    }

    public Popup() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setUndecorated(true);
                frame.setBackground(new Color(0, 0, 0, 0));
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setOpaque(false);
            setLayout(new GridBagLayout());
            setBorder(new EmptyBorder(20, 20, 20, 20));
            try {
                add(new JLabel(new ImageIcon(ImageIO.read(getClass().getResource("Windows10.png")))));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g.create();
            g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT);
            g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
            g2d.setColor(new Color(128, 128, 128, 128));
            g2d.fill(new RoundRectangle2D.Float(0, 0, getWidth() - 1, getHeight() - 1, 20, 20));
            g2d.dispose();
        }

    }

}