我有一个JFrame
透明,总是在顶部并且无法对焦,所以我可以将它用作屏幕叠加层。它的工作原理,但问题是:当我把光标放在某个地方时,我画了一些东西,我的光标总是“在'上面',所以我无法点击实际上对焦的窗口。有什么方法可以解决这个问题吗?
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 :(得分:0)
我有一个透明的JFrame
您应该使用:
frame.setOpacity(0.0f);
阅读How to Create Translucent and Shaped Windows上的Swing教程中的部分。下载TranslucentWindowDemo
代码以获得一个好的起点。