[英]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.