Я пишу приложение, которое представляет собой виртуальный ноутбук. Идея состоит в том, чтобы панели с различным содержимым (основанным на внешнем файле) были добавлены в панель, которая действует как страница. Как только эта страница заполнится, ее специальный метод add должен вернуть false.
Проблема в том, что я не могу понять, как точно определить размер панелей, когда добавляю их, поэтому в итоге я добавляю слишком много. Предпочтительный размер панелей, как правило, слишком короткий, а размер имеет высоту 0. Есть ли способ определить точный размер, который компонент принимает в макете?
Я пытался использовать doLayout (), но, похоже, он не изменяет размер или предпочитаемый размер моих компонентов. Может я не правильно использую? Вот метод добавления: (ContentPanel имеет BoxLayout, а панель содержимого не имеет установленного размера, но добавляется к панели (этой), которая имеет. Класс, в котором этот метод расширяет JPanel)
public boolean addSpecializedgPanel(SpecializedPanel sp) {
this.contentPanel.add(sp);
this.doLayout();
if (this.contentPanel.getSize().height > this.getHeight()) {
this.contentPanel.remove(sp);
return false;
}
return true;
}
Спасибо за любую помощь (даже если она критикует весь мой дизайн :))! Это была огромная головная боль!