我正在创建一个应用程序,我需要一个Preferences JFrame,它可以打开另一个JFrame以获得某种类型的更多首选项。虽然我不希望进一步的首选项JFrame能够同时打开多个实例。
我尝试过使用.isActive()
方法,但无论发生什么事情都会报告用于创建JFrame新实例的变量等于null
,它最初设置为当它被初始化时。
那么实际检查某个JFrame是否已存在实例的最佳方法是什么?它是否在启动时和退出时写入变量?如果是这样,当有人按下x
按钮时,你怎么能把它写入变量?如果它没有通过标准方法崩溃和关闭怎么办?
或者是否有另一种方法可以让isActive()
方法工作或其他方法更好?
答案 0 :(得分:2)
应该做的是使JFrame成为模态JDialog。您可以打开JDialog,而不是打开JFrame。您将其他设置窗口作为parent
传递,并将true
传递给modal
。只要此模式对话框打开,这将阻止其他设置窗口中的任何操作。
多数/几乎每个程序都使用了什么。您是否注意到,当您打开设置窗口并尝试单击主窗口时,设置窗口会弹回顶部并闪烁一秒钟?这就是模态对话框的作用。
答案 1 :(得分:0)
为什么不完全避免创建新的JFrame?只需在执行中提前制作一个,并在需要时将其显示出来,并在暂时不再需要时将其隐藏起来。尝试使已经可见的JFrame可见或隐藏隐藏的JFrame不应该做任何事情。