我想创建一个完全透明的JFrame。现在想象一下,我将JFrame的大小设置为游戏客户端(或任何其他应用程序)的确切大小。我如何做到这一点,当我点击透明的JFrame时,JFrame上的鼠标按键以某种方式转移到游戏客户端。
点击JFrame - >某事(?) - >单击JFrame下的窗口
如果您要我澄清请询问。 谢谢!
注意:对于那些你想知道的人,我不会制作一个关键记录器或任何有害的东西。
编辑:我在最后一行显示super.dispatchEvent(evt);
package mtus.personal.record;
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JFrame;
public class TransparentWindowTest
{
public static void main(String[] args)
{
final CustomEventQueue queue = new CustomEventQueue();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(queue);
JFrame frame = new JFrame("Test");
frame.setSize(1000, 600);
frame.setUndecorated(true);
frame.addMouseListener(new MouseListener()
{
@Override
public void mouseClicked(MouseEvent evt)
{
queue.dispatchEvent(evt);
}
@Override
public void mouseEntered(MouseEvent evt)
{
}
@Override
public void mouseExited(MouseEvent evt)
{
}
@Override
public void mousePressed(MouseEvent evt)
{
}
@Override
public void mouseReleased(MouseEvent evt)
{
}
});
try
{
Class<?> awtUtilitiesClass = Class.forName("com.sun.awt.AWTUtilities");
Method mSetWindowOpacity = awtUtilitiesClass.getMethod("setWindowOpacity", Window.class, float.class);
mSetWindowOpacity.invoke(null, frame, Float.valueOf(0.1f));
} catch (NoSuchMethodException ex)
{
ex.printStackTrace();
} catch (SecurityException ex)
{
ex.printStackTrace();
} catch (ClassNotFoundException ex)
{
ex.printStackTrace();
} catch (IllegalAccessException ex)
{
ex.printStackTrace();
} catch (IllegalArgumentException ex)
{
ex.printStackTrace();
} catch (InvocationTargetException ex)
{
ex.printStackTrace();
}
frame.setVisible(true);
}
private static class CustomEventQueue extends EventQueue
{
@Override
public void dispatchEvent(AWTEvent evt)
{
super.dispatchEvent(evt);
}
}
}