我的应用程序中有多个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。
答案 0 :(得分:1)
使用requiredDialogObject.requestFocusInWindow();
每当你需要专注于特定的对话框时
答案 1 :(得分:0)
我找到了解决问题的方法,我认为值得分享。
解决方案:使用默认构造函数(即新的JDialog())在应用程序中创建多个JDilog将导致共享帧作为每个JDialog的父级,这将导致这类问题。所以我使用重载的构造函数new JDialog(new JFrame())为每个JDialog提供单独的父级,这解决了我的问题。