透明,点击,始终在顶部JFrame

时间:2012-02-21 04:52:47

标签: 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);
}
}

1 个答案:

答案 0 :(得分:2)

你可能需要做一个超过jframe的java进程,
 当没有聚焦时,jframe无法捕捉键击,你做这类事情的唯一方法就是每次丢失它时都将焦点放在你的jframe上,意味着不可能使用任何其他打开的窗口。 你可能需要改变语言。