Я пишу приложение, которое является виртуальным ноутбуком. Идея состоит в том, чтобы панели с различным содержимым (которое основано на внешнем файле) добавлено в панель, которая выступает в качестве страницы. Когда эта страница заполнена, ее специализированный метод добавления должен возвращать значение false.Размер просчитан при динамическом добавлении JPanels
Проблема в том, что я не могу понять, как точно определить размер панелей, когда я их добавляю, поэтому я в итоге добавляю слишком много. Предпочтительный размер панелей обычно слишком короткий, а размер имеет 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;
}
Спасибо за любую помощь (даже если она критикует весь мой дизайн :))! Это была огромная головная боль!
Я перефразировал свой вопрос таким образом, что (надеюсь) легче ответить и имеет полностью исполняемый образец кода! Проверьте это => http://stackoverflow.com/questions/3482379/return-actual-size-of-jcomponent-as-displayed – nova