java - JFrame "blocking"显示()

标签 java swing modal-dialog jframe modality

我正在使用 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 :只需使用 true对于 modal其构造函数中的参数(请参阅 JDialog )

虽然我不认识Charva,但是JFrame.show()自 Java 1.5 起已弃用(您应使用 setVisible(true) 代替)。

关于java - JFrame "blocking"显示(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822696/

相关文章:

javax.net.ssl.SSLKeyException : Invalid signature on ECDH server key exchange message( in java)

java - TCP Socket接收和处理多个消息

java - JFormattedTextField 的 setValue 不显示在 GUI 上

jquery - Flowplayer 位于模态窗口上方

jquery - 模态对话框内的 Ajax 调用

java - 在 Java/Android 中使 if 语句等待

java - 使用eclipse配置tomcat

java - 线程 JFrame 需要更新 JTextPane

java - 按组动画图像列表 Java Swing

angular - 以编程方式打开 ng-bootstrap 模式