【问题标题】:Getting the correct sizes for JComponent after using GroupLayout使用 GroupLayout 后获取 JComponent 的正确大小
【发布时间】:2011-05-24 21:27:40
【问题描述】:

我想问是否有可能在将 JPanel 放置在另一个使用 GroupLayout 作为布局管理器的 JPanel 中之后获得正确大小的 JPanel。我已经尝试过使用:

.getPreferredSize():这会导致我设置的首选大小,而不是框架中 JPanel 上绘制的实际大小(如果调整框架获取的大小,则元素将水平扩展;这是看不到的在值中)。

.getSize():返回 0。

.getHeight():返回 0。

.getWidth():返回0。

也许代码的位置是相关的,但它是在屏幕上显示之后执行的,所以没关系。

要在屏幕上显示后强制它这样做,也许我可以使用 EventQueue,但我不确定如何。

感谢您的回答!

【问题讨论】:

    标签: java size layout-manager grouplayout


    【解决方案1】:

    只有在组件被渲染后,您才能获得“正确”的组件大小,方法是调用顶级容器上的 pack 或 setVisible(true)。

    也许代码的位置是相关的,但它是在屏幕上显示之后执行的,所以没关系。

    那么有些事情是不对的。您确定您是在可见组件上调用这些方法,而不是在某些变量上调用它们吗?如果没有代码,很难判断错误在哪里。

    【讨论】:

    • 实际上,doLayout() 在具有一定大小的容器上也应该可以工作。
    • 也许可以,但是如果您阅读 API 说明您不应该直接使用 doLayout()。
    • 感谢您的回答!终于找到问题了,是因为我的JPanel还没有显示出来,但是在初始化所有元素后,我可以得到正确的面板大小。
    • PS:我忘了说。我的程序如下: MainWindow 包含不同的 JPanel。我想在 MainWindow (包含一个框架)/框架调整大小后编辑网格行的数量,最好使用什么方法? (我不熟悉调整大小后触发的操作)谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多