Java空布局&;重新验证

Java空布局&;重新验证,java,swing,Java,Swing,我们正在为学校做一个小游戏,但我的小组遇到了一些麻烦。我们使用空布局管理器构建应用程序,并将每个元素放置在绝对位置。现在我们遇到了一些我们自己无法解决的问题 一旦我们启动应用程序,它看起来很好,但是我们也可以调用最小化应用程序并恢复它。我们所有的元素(看起来像什么)都被移除了。当调用removeAll()并后跟Revalidate()时,也会发生这种情况 我画了一些截图来澄清我在说什么。有人能帮我们吗 应用程序启动时工作正常: 最小化后应用程序失败:如果没有任何代码,我所能做的就是将您指向Ora

我们正在为学校做一个小游戏,但我的小组遇到了一些麻烦。我们使用空布局管理器构建应用程序,并将每个元素放置在绝对位置。现在我们遇到了一些我们自己无法解决的问题

一旦我们启动应用程序,它看起来很好,但是我们也可以调用最小化应用程序并恢复它。我们所有的元素(看起来像什么)都被移除了。当调用removeAll()并后跟Revalidate()时,也会发生这种情况

我画了一些截图来澄清我在说什么。有人能帮我们吗

应用程序启动时工作正常:


最小化后应用程序失败:

如果没有任何代码,我所能做的就是将您指向Oracle的Swing

也许甲骨文可以帮你。花一点时间(几个月)学习教程

根据你的评论。您应该永远不要在带有Swing元素的JPanel上执行removeAll。您应该几乎永远不要使用JPanel在JPanel上执行removeAll。这是甲骨文的

也许甲骨文可以帮你


最后,我写了一篇文章,向您展示了如何将Oracle解释的所有内容结合起来

大多数Java Swing开发人员可能不喜欢空布局,但它不应该是程序失败的原因。简单地使用空布局+最小化框架不应导致组件重新定位。我认为一定是您犯了其他一些错误导致了这个问题。

不要使用空布局。使用适当的布局管理器。从使用revalidate()开始没有帮助。revalidate()方法调用布局管理器来设置所有组件的大小/位置。只是我们将jlabel和JButtons添加到一个JPanel(在JFrame上),一旦我们在该JPanel上调用RemoveAll和Revalidate,或者最小化我们的应用程序,位置就变了gone@Thijs,请从学习布局管理器开始。当你和他们做一件或多件事时,你会爱上他们。说真的,“你永远不应该在带有Swing元素的JPanel上进行removeAll”?Oracle的文档中有吗?解决方案是什么?我必须保留我自己的组件列表并逐个删除它们?