Search code examples
javaswingjdialog

Bringing specific Jdialog to front when having multiple jdialogs in one application


I have multiple JDialogs in my application stored in a map. These JDialogs are all have

setModel(false);

When these dialogs are out of focus and I want to bring a specific JDialog toFront all JDialogs come toFront. I want the specific Jdialog to come to front and want the other JDialogs to remain in back.

     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;
       }

This code brings all the JDialogs toFront having the specificJDialog on top of the stack.

getJDialogMap();

This Method only returns a HashMap nothing else.


Solution

  • I found a solution to my problem I think it is worth sharing it.

    Solution: Creating multiple JDilogs in an application with default constructor i.e. new JDialog() will result in a shared frame as the parent of each JDialog which will cause these kind of problems. So I used the overloaded constructor new JDialog(new JFrame()) to have separate parent for each JDialog and that solved my problem.