如何设置可见以隐藏设置为可见的 jDialog(在 if 条件内)显示(在 if 循环之外)?
Posted
技术标签:
【中文标题】如何设置可见以隐藏设置为可见的 jDialog(在 if 条件内)显示(在 if 循环之外)?【英文标题】:How can I set visible to hide the jDialog (inside if condition) that is set visible shown (outside if loop)? 【发布时间】:2018-06-06 16:48:06 【问题描述】:我想在buttonGroup
未激活且单击搜索按钮时打开包含错误消息的DialogFrame
。所以在 ActionEvent 中,我将DialogFrame
设置为setVisible(true)
。但是当按钮组处于活动状态并且我单击搜索按钮(在if
条件内)时,setVisible(false)
似乎不起作用,换句话说,DialogFrame
仍然弹出!
如何在if
条件内关闭DialogFrame
的可见性?
private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt)
SrchEMsg sem = new SrchEMsg(this);
sem.setVisible(true);
sem.setLocationRelativeTo(null);
sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
if (bgGroup.getSelection() != null)
sem.setVisible(false); //doesn't work.
SrchResult sr = new SrchResult();
sr.setVisible(true);
sr.pack();
sr.setLocationRelativeTo(null);
sr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
【问题讨论】:
JDialog 是模态的吗?如果是这样,那么它将在设置为可见后阻塞代码流。 为什么默认设置为可见?为什么不sem.setVisible(bgGroup.getSelection() == null);
1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2)对问题使用相关标签。 JDialog
标签是相关的,你的 IDE 的标签不相关。
【参考方案1】:
我建议不要操纵可见性,而根本不创建sem
如果满足某些条件:
if (bgGroup.getSelection() == null)
// only handle `sem`
SrchEMsg sem = new SrchEMsg(this);
sem.setVisible(true);
sem.setLocationRelativeTo(null);
sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
else
// only handle `sr`
SrchResult sr = new SrchResult();
sr.setVisible(true);
sr.pack();
sr.setLocationRelativeTo(null);
sr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
【讨论】:
【参考方案2】:保持简单。摆脱
sem.setVisible(true);
而只是做
sem.setVisible(bgGroup.getSelection() == null);
仅在需要时将其设置为可见
如果您希望将对话框设置为不可见当用户进行选择,那么您不能在对话框创建代码中执行此操作,而是需要响应适当的事件,例如一个 ActionListener 或 ItemListener 添加到您的 JRadioButtons。
【讨论】:
以上是关于如何设置可见以隐藏设置为可见的 jDialog(在 if 条件内)显示(在 if 循环之外)?的主要内容,如果未能解决你的问题,请参考以下文章
labview如何设置一个按钮的可见与隐藏;即当一定的条件满足时按钮才会显示出来可用