【发布时间】:2011-07-19 14:57:29
【问题描述】:
如何判断一个JDialog组件是否已经打开,从而避免同一个JDialog在同一个应用实例中被打开两次?
我想到的一个解决方案是验证一个对象是否已经是一个JDialog实例(dialogObj instanceof JDialog),如果是,我只是调用负责其构造/显示的方法,如果不是,我只是创建一个新的JDialog实例(如果我有妄想,请随意填写以纠正我)。
假设我创建了一个 JDialog,其中包含一 (1) 个 JPanel、一 (1) 个 JTextField、一 (1) 个 JButton,并且保存每次“显示” JDialog 的事件的元素是 JMenuItem -> JPopUpMenu -> TrayIcon(系统托盘图标)。
我几乎找到了解决它的方法(如第二段所示),但是,当我通过系统托盘再次打开它时,我在“处理”对话框之前输入的所有内容再次出现,更不用说其他元素状态保持不变(启用 JButton 等 - 这是另一个故事)。
这里有没有人知道如何解决它(当然有)?
【问题讨论】:
-
同一个实例,还是一般?
-
有问题。 JMenuItem 上的每个 ActionEvent 负责显示它,创建一个扩展 JDialog 的类的新实例。正如我所说,我可以通过“instanceof”验证对象是否是 JDialog 实例,但是当我再次处理并再次调用它时,JTextField 会保存我输入的最后一个文本。