2012-02-21 109 views
3

所以我目前有一個透明的JFrame,你可以點擊,但我需要它保持在所有其他窗口之上。假設你已經打開了一個瀏覽器,我希望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); 
} 
} 
+4

請不要編寫間諜軟件。 :( – 2012-02-21 06:21:25

+0

Java是一個奇怪的選擇 – 2012-02-21 06:25:10

+0

比不可能,因爲所有今天的本機操作系統窗口消耗MouseEvent – mKorbel 2012-02-21 09:32:17

回答

2

你可能需要做一個Java進程超過一個JFrame,
的JFrame不能趕上擊鍵時無法對焦,爲你做這樣的事情的唯一方法是將焦點放到你每次你丟失它時,都要重新設置,意味着不可能使用任何其他打開的窗口。 您可能需要更改語言。