Gözlemlerime göre AlwaysOnTop ayrıcalığının her zaman en üstte olmayı talep eden son sürece verildiğini gördüm.
Dolayısıyla, setAlwaysOnTop(true)daha sonra başka bir uygulamanın bu seçeneği kullandığı bir uygulamanız varsa , ayrıcalık ikinci uygulamaya verilir. Bunu aşmak için , geçerli pencerenin üstüne herhangi bir pencere geldiğinde setAlwaysOnTop(false)ve tekrar ayarladım setAlwaysOnTop(true).
Ben bunu kontrol ettik wordwebde windows. WordWeb, aşağıdaki AlwaysOnTopseçeneği kullanan uygulamalardan biridir.OS
Oyun senaryonuzla düzgün çalışıp çalışmadığından emin değilim.
Uyarı : Yan etkilerin farkında değilim.
İşte kod örneği:
import java.awt.event.*;
import javax.swing.*;
public class MainWindow extends JFrame implements WindowFocusListener
{
public MainWindow()
{
addWindowFocusListener(this);
setAlwaysOnTop(true);
this.setFocusable(true);
panel = new JPanel();
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){
setAlwaysOnTop(false);
setAlwaysOnTop(true);
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();}
}