簡體   English   中英

JFrame“阻塞”顯示()

[英]JFrame "blocking" show()

我正在使用 CHARVA(類似 ncurses 的 Swing),但遇到了問題。

因為charva與Swing非常相似,所以我認為Swing的解決方案與charva相同。

我正在開發一個調用JFrame擴展類的應用程序,獲取其返回代碼並根據返回代碼顯示其他JFrame窗口。

就像是 :

public static void main() {
MainFrame mainframe=new MainFrame();
mainframe.show();
switch (mainframe.returncode) {
       case "generalsetting": Frame1 frame1=new Frame1;
       frame1.show();
       break;
       case "usersetting": Frame2 frame2=new Frame2;
       frame2.show();
       break;

等等。但是當我這樣做時:

mainframe.show();

該程序不會等到大型機關閉/隱藏,而是繼續“切換”,返回碼未初始化並使我的程序崩潰。

有一種方法可以進行“阻塞” show()嗎?

如果您想執行阻塞調用,您可以嘗試使用模態JDialog而不是JFrame :只需在其構造函數中為modal參數使用true (請參閱JDialog

雖然,我不知道 Charva,但JFrame.show()自 Java 1.5 起已被棄用(您應改用setVisible(true) )。

有沒有辦法進行“阻塞”show()?

是的。 您可以讓MainFrame擴展JDialog而不是JFrame並使其成為模態:

class MainFrame extends JDialog {
    //code...
}

System.out.println("Before");
MainFrame d = new JDialog();
d.setModal(true);
d.setVisible(true);
System.out.println("After");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM