如果您没有明确设置 JPanel 的首选大小,那么它何时设置?
我有以下代码:
private static class ScrollableJPanel extends JPanel implements Scrollable {
@Override
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
.
.
.
}
这个代码:
myPanel = new ScrollableJPanel();
// Add a bunch of controls to the panel.
final JScrollPane scroll = new JScrollPane(myPanel);
scroll.setAutoscrolls(true);
scroll.setHorizontalScrollBarPolicy(
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
但是,在调用 getPreferredScrollableViewportSize() 时 myPanel 的首选大小似乎是任意值 (4225, 34),并且 prefSizeSet = false。
根据Java 文档,这是定义此方法的合理方式。然而,myPanel 的实际尺寸远高于 34 像素,因此视口太小了。
我在这里做错了什么?我应该明确设置 myPanel 的首选大小吗?我试过了,但我想使用布局管理器确定的实际大小,而不仅仅是做出稍后会被覆盖的猜测。
请注意,我的问题不是如何为 JPanel 设置确切的大小。我希望布局管理器这样做。我也不想显式设置首选大小。我认为这也由布局管理器处理。我想知道的是为什么布局管理器没有为首选大小本身设置一个合理的值,以便我可以返回一个合理的 PreferredScrollableViewportSize。