У меня проблема:Модальное окно поверх модального окна в java swing?
У меня есть основное окно приложения (JFrame), которое заполняет весь экран.
Когда нажимается кнопка, появляется меньшее окно, позволяющее пользователю вводить некоторые данные. Пока пользователь делает это, главное окно не должно прыгать перед ним и не допускать взаимодействия.
Решение: открыть модальный JDialog. Позволяет называть Dialog 1.
Но когда нажата кнопка в этом диалоговом окне, появляется новое окно (да/нет-диалог) .. и, опять же, нужно действовать модально на уже модальном диалоговом окне JDialog 1 Попытка сделать это, второй диалог продолжает исчезать за первым.
Я пробовал сделать Dialog 1 JFrame, но потом, конечно, я потерял «модальный» бит. Forcing Dialog 1, чтобы оставаться в нем, по-прежнему удерживает кнопку главного окна кнопки.
Что мне не хватает? Как я могу разместить модальное окно поворота над другим модальным поворотным окном?
Edit: минимальный пример одного не-реально работающей версии:
Основной класс для открытия:
public class MainWin extends JFrame {
public MainWin(){
this.setSize(800,800);
JButton b = new JButton("click hehe");
this.getContentPane().add(b);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Dia1(MainWin.this);
}
});
this.setVisible(true);
}
}
Главное окно:
public class MainWin extends JFrame {
public MainWin(){
this.setSize(800,800);
JButton b = new JButton("click hehe");
this.getContentPane().add(b);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Dia1(MainWin.this);
}
});
this.setVisible(true);
}
}
First Dialog :
public class Dia1 extends JDialog {
public Dia1(final JFrame parent){
super(parent, true);
this.setSize(400, 400);
JButton b = new JButton("click hehe");
this.getContentPane().add(b);
this.setVisible(true);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Dia2(parent);
}
});
}
}
Второй Диалог:
public class Dia2 extends JDialog {
public Dia2(JFrame parent){
super(parent, true);
this.setSize(200, 200);
JButton b = new JButton("click hehe");
this.getContentPane().add(b);
this.setVisible(true);
}
}
PS: Я только что понял: Диалог 2 не спрятался, как я подозревал .. это просто не существует. Скорее всего, потому что родительское окно заблокировано из модального диалога?
показать базовый код пример того, что вы пытались – Sionnach733
* «Что мне не хватает?» * [MCVE] (http://stackoverflow.com/help/mcve) (минимальная Полная Проверяемость пример) или [ SSCCE] (http://www.sscce.org/) (короткий, самосохраненный, правильный пример). –
Добавил MCVE в самую barebone версию, которую я мог бы придумать ... если там будет комбинация JFrame/JDialog/Modal, которая будет делать то, что я хочу? – Layna