gpt4 book ai didi

java - 调整 JFrame 大小时会发生什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:44 25 4
gpt4 key购买 nike

我很好奇在调整 JFrame 大小时在 Java 中到底发生了什么。

我问这个是因为我在 JFrame 内向我的 bigCONtainer(JPanel 类型)添加组件时遇到问题。我想在用户执行某个操作时添加一些内容,但在以某种方式调整 JFrame 的大小之前,组件不会变得可见。

我在尝试让新组件出现时发现了这一点;我调用了 myJFrame.pack()。作为一个次要问题,我想知道 pack() 的作用,包括一般的和特定于调整大小的。 Java 文档听起来好像会将每个组件的大小调整到其首选大小。如果我决定在我的实现中使用 pack() 来显示新组件,我的解决方案是始终设置首选大小。谁能证明这是一种公认​​的编程实践?这看起来确实是个好主意。

我也试过 repaint() 来让新组件显示出来,但是没有用。

最佳答案

您需要在容器上调用 revalidate()then repaint(),以便在运行时添加或删除组件。

revalidate() 告诉容器的布局管理器重新布局它包含的组件,而这正是您的代码中缺少的。如果没有这个请求,布局不会改变,并且在您重新调整 GUI 的大小之前您看不到变化,这几乎是做同样的事情。

请注意,如果您在启动时向 GUI 添加组件,那么解决方案是调用 pack()setVisible(true) 到顶部-level 容器仅添加所有组件后。

关于 pack() 做什么的细节,做我们都做的——阅读源代码。

关于java - 调整 JFrame 大小时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17246369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com