可以将 JFrames 放在父 window 中吗?

Can JFrames be put in a parent window?

我有一个创建多个 JFrames 并将它们显示为单独的项目 windows。这可能会让人非常困惑,所以我想将所有这些帧收集到一个父 window 中。

我知道 JInternalFrame 的概念,原则上肯定可以工作,但是项目很大,而且 JFrames 相当复杂,所以将它们单独转换为 JInternalFrame 对我来说似乎或多或少是不可行的(特别是由于JInternalFrame 在某些方面(例如鼠标事件)的行为略有不同)。

有没有办法将 JFrames 本身放入父级 window? (或者还有其他我没有想到的解决方案吗?)

简短的回答是否定的。这就是为什么我们通常不鼓励直接从 JFrame(或顶级容器)扩展。您需要尝试将 JFrame 中的内容移至 JPanel 之类的内容。这将使您能够更好地决定如何呈现内容。

最简单的解决方案是检查您的代码并将 extends JFrame 替换为 extends JPanel 并更正它产生的任何编译器错误。如果需要,您还可以添加一个 static 方法,将容器实例包装到 JFrame 中。