Когда предпочтительный размер набора 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);
Однако предпочтительный размер myPanel во время вызова getPreferredScrollableViewportSize ()кажется произвольным значением (4225, 34), и prefSizeSet = false.
Согласно документации Java , это разумный способ определить этот метод.Однако фактический размер myPanel намного превышает 34 пикселя, поэтому порт просмотра слишком мал.
Что я здесь не так делаю?Должен ли я установить предпочтительный размер myPanel явно?Я попробовал это, но я хочу использовать фактический размер, определенный менеджером макета, а не просто делать предположение, которое будет переопределено позже.
Обратите внимание, что мой вопрос не в том, как установить точный размер дляJPanel.Я хочу, чтобы менеджер по расположению сделал это.Я также не хочу явно устанавливать предпочтительный размер.Я думал, что это также обработано менеджером по расположению.Я хочу знать, почему менеджер макета не устанавливает разумное значение для самого предпочтительного размера, чтобы я мог вернуть разумный PreferredScrollableViewportSize.