Java - 在 JDialog/JFrame 上调用 Component#setName
Java - Calling Component#setName on JDialog / JFrame
我想知道在 Window
的子类上调用 setName
是否是个好主意。
我注意到,例如,一个对话框的默认名称是 dialog0
。这些名称对 Swing 内部结构重要吗?如果是这样,我在显示 window 之前还是之后设置名称是否重要? name
的 getter/setter 的 javadoc 没有显示任何有用的信息。
我们的想法是覆盖这些名称,以便为不包含用户数据的 window 获取更通用的名称。通常我会使用类似 putClientProperty
的东西,但由于 Windows
扩展了 Component
,而不是 JComponent
,这是不可能的。
Normally I would've used something like putClientProperty, but since Windows extends Component, instead of JComponent, this isn't possible.
您可以使用 JFrame
的 JRootPane
。它确实扩展了 JComponent
.
JRootPane rootPane = frame.getRootPane();
rootPane.putClientProperty(...);
这将为您提供一个与框架关联的独特组件。
请参阅 How to Use Root Panes 了解 Swing 的一般结构 window。
Are these names in any way important to Swing internals?
我不知道。
我想知道在 Window
的子类上调用 setName
是否是个好主意。
我注意到,例如,一个对话框的默认名称是 dialog0
。这些名称对 Swing 内部结构重要吗?如果是这样,我在显示 window 之前还是之后设置名称是否重要? name
的 getter/setter 的 javadoc 没有显示任何有用的信息。
我们的想法是覆盖这些名称,以便为不包含用户数据的 window 获取更通用的名称。通常我会使用类似 putClientProperty
的东西,但由于 Windows
扩展了 Component
,而不是 JComponent
,这是不可能的。
Normally I would've used something like putClientProperty, but since Windows extends Component, instead of JComponent, this isn't possible.
您可以使用 JFrame
的 JRootPane
。它确实扩展了 JComponent
.
JRootPane rootPane = frame.getRootPane();
rootPane.putClientProperty(...);
这将为您提供一个与框架关联的独特组件。
请参阅 How to Use Root Panes 了解 Swing 的一般结构 window。
Are these names in any way important to Swing internals?
我不知道。