У меня есть JFrame, который порождает два JDialogs. Каждое из трех окон должно быть фокусируемым (и это то, как я сейчас написал), но этот JFrame не будет отображаться поверх диалогов. Когда вы щелкаете по любому диалоговому окну, они появляются друг над другом (как и следовало ожидать), но этот JFrame просто отказывается выходить на передний план.
Мне нужно, чтобы они оставались JDialogs (в отличие от самих JFrames), поскольку большая часть текущего поведения желательна (например, когда другое окно / приложение блокирует любое или все окна, если вы выберете любое из окон, все они выйдут на передний план (тогда как три JFrames приведут к выходу только выбранного)).
Мои конструкторы 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.
}
});
}
});
}
Мысли? Я ничего не получил.