如何从 jInternalFrame 调用 JinternalFrame 而不会丢失 Swing 中的调用框架控制

How to call JinternalFrame from jInternalFrame withut lossing calling frames control in Swing

我在 SWING 中从 XYZ jInternalFrame 调用 ABC jINternalFrame。

但是当我调用 ABC 时,我失去了 XYZcontrol

我要的是

-在 XYZ 用户选择加载产品数据的选项
-IF 不匹配发现 XYZ 调用 ABC
-在 ABC -用户纠正不匹配并关闭 ABC 框架
现在我希望我的程序应该从它调用 ABC

的地方继续

目前它调用 ABC 并执行 XYZ 我如何才能实现这一点? 我正在使用下面的代码

if (frmUpdateData == null || frmUpdateData.isClosed()){ 
  frmUpdateData = new FrmUpdateData(); 
  JDesktopPane desktopPane = getDesktopPane(); 
  desktopPane.add(frmUpdateData); 
  frmUpdateData.setVisible(true); 
  frmUpdateData.setLocation(this.getWidth()/2- frmUpdateData.getWidth()/2, this.getHeight()/2-frmUpdateData.getHeight()/2); 
}

您显示使用模态对话框:

final JDialog frame = new JDialog(parentFrame, frameTitle, true);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);

当您显示模态对话框时,调用模态的代码正在等待模态对话框关闭以继续执行。就像 JavaScript 中的 alert

如果您不想使用 JDialog,您可以试试这个:

    JInternalFrame frmUpdateData = null;
    frmUpdateData = new JInternalFrame("Test", true, true);
    frmUpdateData.setBounds(0, 0, 200, 200);
    JDesktopPane desktopPane = new JDesktopPane();
    desktopPane.setBounds(0, 0, 600, 600);
    desktopPane.add(frmUpdateData);
    desktopPane.setVisible(true);
    frmUpdateData.setVisible(true);
    JFrame frame = new JFrame();
    frame.setBounds(0, 0, 600, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(desktopPane);
    frame.setVisible(true);
    while (frmUpdateData != null && !frmUpdateData.isClosed()) {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    JOptionPane.showMessageDialog(null, "Done");

参考:Whosebug