我有一个生成两个 JDialogs 的 JFrame。三个窗口中的每一个都需要可聚焦(并且是我目前编写的方式),但是 JFrame 不会出现在对话框的顶部。当您单击任一对话框时,它们会相互叠加(如预期的那样),但 JFrame 只是拒绝出现在前面。
我需要它们保持 JDialogs(而不是 JFrames 本身),因为大多数当前行为都是可取的(即,当另一个窗口/应用程序阻塞任何或所有窗口时,如果您选择任何一个窗口,它们都会出现在前面(而三个 JFrame 只会导致选定的一个出现))。
我的 JDialogs 构造函数是这样的:
SubDialog(JFrame parent /*, a handful, ofOther arguments */){
super(parent, ModalityType.MODELESS); //not even the modeless helped
setAlwaysOnTop(false); //not even the not always on top helped
setUndecorated(true); //maybe this has something to do with it (unlikely, just fyi)?
//some simple variable assignments
}
我什至尝试setAlwaysOnTop(true)
在我的 JFrame 中添加一个。没有骰子。我变得绝望,甚至尝试了以下数字之一:
MyJFrame(String title){
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowFocusListener(new WindowAdapter(){
public void windowGainedFocus(WindowEvent e){
final Window w = e.getWindow();
//PLEASE come to the front
w.toFront();
//even MOAR desperation
SwingUtilities.invokeLater(new Runnable(){
public void run(){
w.toFront(); //STILL no dice.
}
});
}
});
}
想法?我什么都没有。