在一个应用程序中拥有多个jdialog时,将特定的Jdialog置于前面

时间:2013-12-05 06:49:47

标签: java swing jdialog

我的应用程序中有多个JDialog存储在地图中。这些JDialog都有

setModel(false);

当这些对话框失焦并且我想将特定的JDialog带到前面时,所有JDialog都会来到前面。我想让特定的Jdialog出现在前面,并希望其他JDialogs留在后面。

     HashMap<String, JDialog> jDialogMap = getJDialogMap();
       String key = "jd1";
       JDialog specificJDialog= jDialogMap.get(key);

        if (specificJDialog== null){
             specificJDialog= new JDialog();
             specificJDialog.setModel(false);
             specificJDialog.setVisible(true);
             jDialogMap.put("jd2", specificJDialog);
        } else {
             specificJDialog.toFront();
             return;
       }

此代码将所有JDialogs toFront在堆栈顶部具有特定的JDialog。

getJDialogMap();

此方法仅返回HashMap。

2 个答案:

答案 0 :(得分:1)

使用requiredDialogObject.requestFocusInWindow();

每当你需要专注于特定的对话框时

答案 1 :(得分:0)

我找到了解决问题的方法,我认为值得分享。

解决方案:使用默认构造函数(即新的JDialog())在应用程序中创建多个JDilog将导致共享帧作为每个JDialog的父级,这将导致这类问题。所以我使用重载的构造函数new JDialog(new JFrame())为每个JDialog提供单独的父级,这解决了我的问题。