如何设置 window 始终位于任何其他应用程序之上
How to set window always on top of any other applications
我有一个 JFrame,它需要始终位于其他应用程序之上。为此,我使用 Window class 的 setAlwaysOnTop()
方法。
这是我的代码:
class Test1 extends JFrame {
public Test1() {
initComponents();
setTitle("Top Window");
setAlwaysOnTop(true);
}
private void initComponents() {
jLabel1 = new JLabel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setText("I am a top most window");
getContentPane().add(jLabel1, BorderLayout.CENTER);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test1().setVisible(true);
}
});
}
private javax.swing.JLabel jLabel1;
}
这适用于其他一些应用程序,例如记事本、资源管理器等,即当我的应用程序位于记事本之上时,一切正常。
但是当我的 java 应用程序超越任何已经在顶部的应用程序时,例如 任务管理器 。那么setAlwaysOnTop()
这个方法就不行了。
我需要的是使我的应用程序始终位于最前面的任何方法。
我还在 Whosebug 上搜索了许多其他相关帖子,但 none 似乎回答了我的问题。我还尝试了其他方法,例如重写 windowDeactivated(WindowEvent e)
方法
addWindowListener(new WindowAdapter(){
@Override
public void windowDeactivated(WindowEvent e) {
toFront();
//requestFocus();
//requestFocusInWindow();
}
});
但这也不起作用。
有没有其他方法可以让我的 JFrame 始终位于所有其他应用程序之上 除了全屏应用程序。
这取决于操作系统。一般来说,你不能保证你的 window 在原生 windows 上总是排在首位,你也不应该。任务管理器始终处于最前面是有充分理由的。
我记得某些版本的 Vista 和更早的 Windows 系统允许这样做,而本机和 Java windows 最终争夺焦点。
我有一个 JFrame,它需要始终位于其他应用程序之上。为此,我使用 Window class 的 setAlwaysOnTop()
方法。
这是我的代码:
class Test1 extends JFrame {
public Test1() {
initComponents();
setTitle("Top Window");
setAlwaysOnTop(true);
}
private void initComponents() {
jLabel1 = new JLabel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setText("I am a top most window");
getContentPane().add(jLabel1, BorderLayout.CENTER);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test1().setVisible(true);
}
});
}
private javax.swing.JLabel jLabel1;
}
这适用于其他一些应用程序,例如记事本、资源管理器等,即当我的应用程序位于记事本之上时,一切正常。
但是当我的 java 应用程序超越任何已经在顶部的应用程序时,例如 任务管理器 。那么setAlwaysOnTop()
这个方法就不行了。
我需要的是使我的应用程序始终位于最前面的任何方法。
我还在 Whosebug 上搜索了许多其他相关帖子,但 none 似乎回答了我的问题。我还尝试了其他方法,例如重写 windowDeactivated(WindowEvent e)
方法
addWindowListener(new WindowAdapter(){
@Override
public void windowDeactivated(WindowEvent e) {
toFront();
//requestFocus();
//requestFocusInWindow();
}
});
但这也不起作用。
有没有其他方法可以让我的 JFrame 始终位于所有其他应用程序之上 除了全屏应用程序。
这取决于操作系统。一般来说,你不能保证你的 window 在原生 windows 上总是排在首位,你也不应该。任务管理器始终处于最前面是有充分理由的。
我记得某些版本的 Vista 和更早的 Windows 系统允许这样做,而本机和 Java windows 最终争夺焦点。