mre*_*mre 4 java singleton swing containers
如何JFrame在整个应用程序中引用顶级容器(例如 a )而不使其成为单例?我问的原因是我试图避免单例反模式。
无论如何,我发现当我需要另一个顶级容器(例如 a JDialog)向用户显示一条简单的消息时,我希望将此对话框直接放置在上述JFrame使用setLocationRelativeTo(frame). 但我可以这样做的唯一方法(目前)是创建 的单个实例JFrame并使用静态getInstance方法访问它。
那么,有没有一种方法可以引用顶级容器而不必求助于单例模式?如果有人需要更多信息,请告诉我!
谢谢。
如果您有对顶级窗口中保存的任何 Swing 组件的引用,例如可以从 Event 对象的(例如 ActionEvent)getSource()方法获取,您可以使用它通过SwingUtilities方法获取顶级窗口:
SwingUtilities.getWindowAncestor(anyComponent);
Run Code Online (Sandbox Code Playgroud)
这个类还有其他有用和类似的方法,例如windowForComponent(Component c) getDeepestComponentAt(...)和getRoot(Component c)
否则,您始终可以通过构造函数或 setter 参数传递引用。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |