我有以下問題:Java swing中模態窗口上的模態窗口?
我有一個主要的應用程序窗口(JFrame),填滿整個屏幕。
單擊按鈕時,會出現一個較小的窗口,讓用戶輸入一些數據。當用戶這樣做時,主窗口既不應該跳到它的前面,也不允許交互。
解決方案:打開一個模態JDialog。我們可以調用該對話框1.
但是,當點擊此對話框中的按鈕時,會彈出一個新窗口(是/否對話框),並且需要在已有模態的JDialog對話框1上運行模態試圖做到這一點,第二個對話框不斷消失在第一個之後。
我試圖讓Dialog 1成爲一個JFrame,但是當然,我放棄了「模態」位。強制對話框1仍然保持主窗口的按鈕可點擊。
我錯過了什麼?我怎樣才能把一個模態搖擺窗口在另一個模態搖擺窗口?
編輯:
開主類:
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);
}
}
第一個對話框中的一個沒有,真正的工作版本 小例子, :
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我可以拿出來......如果有JFrame/JDialog/Modal的soem組合可以完成我想要的功能嗎? – Layna