2012-02-21 6 views
3

私は現在、クリックできる透明なJFrameを持っていますが、他のすべてのウィンドウの上にとどまる必要があります。透明、クリックスルー、常に上にJFrame

ブラウザが開いているとします。私はJFrameをその上に置いて、キーストロークとマウスクリックをキャッチできるようにします。

ここは私の現在のコードです。あなたはおそらくJFrameのよりJavaプロセスの詳細を行う必要があり

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

スパイウェアを書き留めてはいけません。 : –

+0

Javaはそのような選択のために奇妙な選択です –

+0

すべての今日のウィンドウネイティブOSはマウスイベントを受け取ります – mKorbel

答えて

2

焦点を当てていないとき、
JFrameのキーストロークをキャッチすることはできません、あなたがそのような事をするための唯一の方法はあなたにフォーカスを与えることですあなたがそれを失ったたびに、他のウィンドウを開くことはできません。 おそらくlangageを変更する必要があります。

関連する問題