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.

您可以使用 JFrameJRootPane。它确实扩展了 JComponent.

JRootPane rootPane = frame.getRootPane();
rootPane.putClientProperty(...);

这将为您提供一个与框架关联的独特组件。

请参阅 How to Use Root Panes 了解 Swing 的一般结构 window。

Are these names in any way important to Swing internals?

我不知道。