我有一个CardLayout,其中仅根据需要添加卡。因此,当需要显示特定卡(以其名称标识)时,我需要一种方法来检查是否已存在具有该名称的卡,以便我可以相应地显示或创建它。

根据CardLayout documentation

使用addLayoutComponent翻转到使用指定名称添加到此布局的组件。如果不存在这样的组件,那么什么也不会发生。

因此,如果我要求它显示尚未添加的卡,将不会引发任何错误。我找不到任何能让我检查卡是否存在的API。

那么,这有可能吗?如果没有,人们将如何解决这个问题?有一个解决方案,我可以手动记住我添加了哪些卡,但是感觉挥杆应该可以解决这个问题。

最佳答案

CardLayout API无法检查是否已使用给定名称添加了组件。

如果您确实想这样做(但我强烈建议再次这样做),那么您可以在容器使用的CardLayout上使用反射,并读取其vector字段,然后检查每个条目(CardLayout$Card类型)给定名称。如您所见,这看起来像是一种hack,如果有一天重构了CardLayout(当前实现非常难看),它可能会崩溃。

最好的方法是让您直接在某个地方的Set<String>字段中跟踪所有添加的子代的名称。无论如何,这确实不是什么大问题。

关于java - 检查CardLayout中是否存在具有名称的卡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6040989/

10-08 22:26