2017-12-15 8 views
0

私はJFrameを持っています。常に透明で透明ですので、画面オーバーレイとして使用できます。それは動作しますが、問題は次のとおりです。カーソルをどこかに置くと、カーソルが常に「上」になるので、実際にフォーカスしているウィンドウをクリックできません。これを修正する方法はありますか? スイング画面のオーバーレイがマウスの上に乗っているときに干渉します

frame.setOpacity(0.0f); 

How to Create Translucent and Shaped Windows上のSwingチュートリアルからセクションを読む:

public class ExternalOverlay extends JFrame implements ActionListener { 

    public Timer timer; 
    private float[] res; 
    private final int FRAMERATE = 60; 

    public ExternalOverlay() { 
     this.setUndecorated(true); 
     this.setBackground(new Color(0, 0, 0, 0)); 
     float[] res = this.getRes(); 
     this.setBounds(0, 0, (int)res[0], (int)res[1]); 
     this.setAlwaysOnTop(true); 
     this.getContentPane().setLayout(new java.awt.FlowLayout()); 
     this.setVisible(true); 
     this.setAutoRequestFocus(false); 
     this.setFocusableWindowState(false); 
     this.timer = new Timer(1000/FRAMERATE, this); 
     timer.start(); 
    } 

    private float[] getRes() { 
     if (this.res != null) return res; 
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     double width = screenSize.getWidth(); 
     double height = screenSize.getHeight(); 
     return new float[] {(float) width, (float) height}; 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     this.repaint(); 
    } 


    public void draw(Graphics g) { 

    } 

    @Override 
    public void paint(Graphics g) { 
    // draw 
    } 
} 

答えて

0

は、私はあなたが使用する必要があり

透明だのJFrameを持っています。開始するには、TranslucentWindowDemoコードをダウンロードしてください。

+1

私はそれが透明な背景を持っているはずだったはずです – Babbaj

+0

@Babbaj、透明な背景とは何ですか?あなたはフレームが常にオーバートップしているので、オーバーレイとして使うことができます。それはフレームが他のウィンドウの上にあるので、デスクトップ上の他のウィンドウを見ることができます。カスタムペイントを行う場合は、JPanelのpaintComponent()メソッドをオーバーライドしてから、フレームをフレームに追加する必要があります。あなたの質問が明確でないため、あなたの問題を示す適切な[mcve]を投稿してください。 – camickr

関連する問題