JPopupMenu 在 JoptionPane Confirmdialog 上自动隐藏
JPopupMenu auto hide on JoptionPane Confirmdialog
我知道为了防止JOptionpane
隐藏在任何帧后面,我们必须将当前帧作为父帧给JOptionpane
。
我有一个 JTree
和 popupmenu
它有弹出菜单如下
添加
重命名
删除
当我点击删除菜单时,我会调用 showDeleteConfirmation()
来确认是否删除操作
但是如果我使用 currentMainframe(存在 jtree 的那个)作为 JOptionpane
的父框架并且当我单击 JPopumenu
时问题没有隐藏(仍然处于焦点)所以我必须单击 Joptionpane
一次(隐藏弹出菜单)然后只有我可以select选项
如果我使用 null 作为 parentframe 它工作得很好(点击它自动隐藏的菜单项)。
如何解决问题
//Have to click anywhere on JOptionpane to gain focus(also to hide popupmenu)
public static Boolean showDeleteConfirmation() {
if (deleteConfirmation) {
int value = JOptionPane.showConfirmDialog(currentMainFrame, "Are you sure want to delete?", "Delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
return value == JOptionPane.YES_OPTION;
}
return true;
}
//This is working perfectly
public static Boolean showDeleteConfirmation() {
if (deleteConfirmation) {
int value = JOptionPane.showConfirmDialog(null, "Are you sure want to delete?", "Delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
return value == JOptionPane.YES_OPTION;
}
return true;
}
我在调用之前手动调用了JPopupmenu.hide()
,function.It解决了问题
我知道为了防止JOptionpane
隐藏在任何帧后面,我们必须将当前帧作为父帧给JOptionpane
。
我有一个 JTree
和 popupmenu
它有弹出菜单如下
添加
重命名
删除
当我点击删除菜单时,我会调用 showDeleteConfirmation()
来确认是否删除操作
但是如果我使用 currentMainframe(存在 jtree 的那个)作为 JOptionpane
的父框架并且当我单击 JPopumenu
时问题没有隐藏(仍然处于焦点)所以我必须单击 Joptionpane
一次(隐藏弹出菜单)然后只有我可以select选项
如果我使用 null 作为 parentframe 它工作得很好(点击它自动隐藏的菜单项)。
如何解决问题
//Have to click anywhere on JOptionpane to gain focus(also to hide popupmenu)
public static Boolean showDeleteConfirmation() {
if (deleteConfirmation) {
int value = JOptionPane.showConfirmDialog(currentMainFrame, "Are you sure want to delete?", "Delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
return value == JOptionPane.YES_OPTION;
}
return true;
}
//This is working perfectly
public static Boolean showDeleteConfirmation() {
if (deleteConfirmation) {
int value = JOptionPane.showConfirmDialog(null, "Are you sure want to delete?", "Delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
return value == JOptionPane.YES_OPTION;
}
return true;
}
我在调用之前手动调用了JPopupmenu.hide()
,function.It解决了问题