У нас был запрос, что некоторые диалоги всегда должны быть сверху, основываясь на каком-то элементе управления. Это необходимо включить/выключить для каждого диалога. Используя следующий код, и пройдя через следующие шаги, мне кажется, как ошибка Java:Развернуть несколько диалоговых окон сверху вниз не работают независимо, если у них один и тот же владелец
- Набор Dialog1 на вершине. Проверьте, что он остается на вершине.
- Установить dialog2 сверху. Проверьте, что оба диалога остаются на вершине.
- Установить диалог1 не сверху.
Ожидаемое: Dialog2 остается на вершине и Dialog1 не
Фактический: ни один из диалогов не остаются на вершине.
Это имеет некоторую связь с владельцем диалогов. Если вы раскомментируете комментарии к блоку, все работает так, как ожидалось, но я не думаю, что это нормальное поведение, так как Always on Top не должен быть связан с родителем. Это нормально или это проблема с Swing? К сожалению, установка нового владельца для каждого диалогового окна вызывает другие проблемы.
public static void main(String[] args) {
final JFrame rahan = new JFrame("Rahan");
rahan.setSize(new Dimension(1000,1000));
rahan.setVisible(true);
JDialog d1 = getJDialog(/*new JFrame()*/);
JDialog d2 = getJDialog(/*new JFrame()*/);
}
private static JDialog getJDialog(/*JFrame owner*/) {
final JDialog jDialog = new JDialog(/*owner*/);
final JButton onTop = new JButton("OnTop");
onTop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jDialog.setAlwaysOnTop(!jDialog.isAlwaysOnTop());
}
});
jDialog.add(onTop);
jDialog.setVisible(true);
jDialog.pack();
return jDialog;
}
Вы хотите модальный диалог? –
К сожалению, да. Приложение заполнено модальными диалогами для всех видов подтверждений. –
Извините, мой плохой. Я думал о другом случае. Ни один из диалогов не должен или будет модальным. –