尝试这种方法 Window 类:
Window
Window.setAlwaysOnTop(布尔)
它的工作方式与Windows TaskManager中的默认方式相同:切换到另一个应用程序,但它始终显示在顶部。
这是在Java 1.5中添加的
示例代码:
import javax.swing.JFrame; import javax.swing.JLabel; public class Annoying { public static void main(String[] args) { JFrame frame = new JFrame("Hello!!"); // Set's the window to be "always on top" frame.setAlwaysOnTop( true ); frame.setLocationByPlatform( true ); frame.add( new JLabel(" Isn't this annoying?") ); frame.pack(); frame.setVisible( true ); } }
<子> 即使未激活,窗口仍保持在顶部 子>
不要使用setFullScreenWindow,只需获取屏幕大小,然后设置SetSize,一切都会好的。
根据我的观察,我发现AlwaysOnTop权限被赋予最新的流程,该流程要求始终位于最前端。
所以,如果你有一个应用程序 setAlwaysOnTop(true) 后来另一个应用程序使用此选项,该权限被赋予第二个应用程序。为了解决这个问题,我已经设定了 setAlwaysOnTop(false) 然后再次 setAlwaysOnTop(true) 每当任何窗口出现在当前窗口的顶部时。
setAlwaysOnTop(true)
setAlwaysOnTop(false)
我已经检查过了 wordweb 在 windows 。 WordWeb是使用的应用程序之一 AlwaysOnTop 选项来自 OS
wordweb
windows
AlwaysOnTop
OS
我不确定它是否适合您的游戏场景。
的 警告 强> :我不知道副作用。
这是代码示例:
import java.awt.event.*; import javax.swing.*; public class MainWindow extends JFrame implements WindowFocusListener { public MainWindow() { addWindowFocusListener(this); setAlwaysOnTop(true); this.setFocusable(true); // this.setFocusableWindowState(true); panel = new JPanel(); //setSize(WIDTH,HEIGHT); setUndecorated(true); setLocation(X,Y); setExtendedState(MAXIMIZED_BOTH); setVisible(true); } public void windowGainedFocus(WindowEvent e){} public void windowLostFocus(WindowEvent e) { if(e.getNewState()!=e.WINDOW_CLOSED){ //toFront(); //requestFocus(); setAlwaysOnTop(false); setAlwaysOnTop(true); //requestFocusInWindow(); System.out.println("focus lost"); } } private JPanel panel; private static final int WIDTH = 200; private static final int HEIGHT = 200; private static final int X = 100; private static final int Y = 100; public static void main(String args[]){ new MainWindow();} }