Java 如何重新计算JComponent的首选大小?

Java 如何重新计算JComponent的首选大小?,java,swing,jcomponent,Java,Swing,Jcomponent,我知道,当我创建JComponent实例时,它有自己的首选大小。现在让我们假设我手动设置JComponent的PreferredSize,维度为0 x 0。我希望该组件“重置”其自己的首选大小。如何执行此操作?1)将首选大小设置为null应将组件重置为计算首选大小,就像从未设置一样 component.setPreferredSize(null); 这可能不会达到您想要的效果,这取决于您如何表示布局应该重做——但至少从技术上来说,这是您问题的答案 2) 通常建议不要使用setPreferred

我知道,当我创建JComponent实例时,它有自己的首选大小。现在让我们假设我手动设置JComponent的PreferredSize,维度为0 x 0。我希望该组件“重置”其自己的首选大小。如何执行此操作?

1)将首选大小设置为null应将组件重置为计算首选大小,就像从未设置一样

component.setPreferredSize(null);
这可能不会达到您想要的效果,这取决于您如何表示布局应该重做——但至少从技术上来说,这是您问题的答案


2) 通常建议不要使用setPreferredSize,请参见

您是在启动时设置大小还是在某些事件后设置大小?您到底为什么要将首选大小设置为0x0
setVisible(false)
可能是您需要的效果。@在我的例子中,layoutManager根据组件的preferredSize设置其空间。因此,如果我只设置(假)组件,空白空间仍然可见,因此,我需要设置大小的组件。但在另一种情况下,我需要将其preferredSize设置回原始值。@威廉:在将preferedSize设置为0之前,请将旧的preferedSize保存在某个变量中,然后重新使用。@Harry谢谢Harry,我做了类似的事情。但我不相信这是最好的方法。java如何计算组件的默认首选大小?我认为这是重新计算的正确方法。啊!你是救命恩人。谢谢你,伙计!我应该先看一下文档。问题是布局管理器要求我指定首选大小,因为它需要它来计算空间。