java - 透明,点击,总在最前面 JFrame

标签 java swing jframe jna

<分区>

所以我目前有一个透明的 JFrame,您可以点击它,但我需要它位于所有其他窗口的顶部。

假设您打开了一个浏览器,我希望 JFrame 保持在浏览器之上,但能够捕捉到击键和鼠标点击。

这是我当前的代码。

public class TransparentWindow extends JFrame {

private static URL URI;

public TransparentWindow() {
    initComponents();
}

@SuppressWarnings("unchecked")
private void initComponents() {
    setExtendedState(Frame.MAXIMIZED_BOTH);
    setIconImage(Toolkit.getDefaultToolkit().getImage(URI));
    setResizable(false);
    setUndecorated(true);
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    setAlwaysOnTop(true);
    System.setProperty("sun.java2d.noddraw", "true");
    WindowUtils.setWindowTransparent(this, true);
    WindowUtils.setWindowAlpha(this, 0.6f);

    addKeyListener(new KeyListener() {

        @Override
        public void keyPressed(KeyEvent e) {
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }

        @Override
        public void keyTyped(KeyEvent e) {
        }
    });
}

public static void main(String[] args) {
    try {
        URI = new URL("http://i.imgur.com/xtZK0.png");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    new TransparentWindow().setVisible(true);
}
}

最佳答案

你可能需要做一个 java 进程而不是一个 jframe,
jframe 在没有焦点时无法捕获击键,你做这样的事情的唯一方法是每次你失去它时将焦点放在你的 jframe 上,这意味着不可能使用任何其他打开的窗口。 您可能需要更改语言。

关于java - 透明,点击,总在最前面 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372362/

相关文章:

java - 如何禁用 JFrame 背景

java - 安卓 : App Visit Count using Firebase Database

java - Smack - 如何读取 MultiUserChat 的配置?

java - Java 中的 System.exit(0)

java - MigLayout:如何更改默认的 “related” 和 “unrelated” 间隙值?

java - ActionPerformed 方法不适用于另一个类

java - JFrame 添加文本不起作用。出现两个GUI

java - cfdump 中奇怪的 UnsupportedOperationException java 错误

java - 获取发送到 Servlet 的 GET/POST 的 JSP URI

Java Swing 编程结构 : are listeners supposed to be the source of almost all Swing components?