Панель расширяется при удалении / добавлении компонентов к ней - PullRequest
0 голосов
/ 29 октября 2018

Когда я предоставляю этот код методу mouseClicked в интерфейсе MouseListener, changeableContentPanel расширен. Кто-нибудь может мне помочь?

if (!changeableContentPanel.isAncestorOf(aMO)) {
    aMO = new AccountsManagementOptions();
    changeableContentPanel.removeAll();                
    changeableContentPanel.validate();
    changeableContentPanel.repaint();
    aMO.setLocation(5, 100);
    changeableContentPanel.add(aMO);
    changeableContentPanel.validate();
    changeableContentPanel.repaint();
}

1 Ответ

0 голосов
/ 29 октября 2018

При удалении / добавлении компонентов на панель вы должны использовать:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

То есть вы должны использовать revalidate () вместо validate (), и вам нужно вызывать код только один раз после внесения всех изменений в панель.

элемент changeableContentPanel расширен.

Да, поскольку вызывается диспетчер компоновки, и размер панели будет пересчитан на основе размера компонента, добавленного на панель.

Может ли кто-нибудь мне помочь?

Если вы не хотите, чтобы размер изменялся, вы должны использовать CardLayout на вашей панели. Размер панели будет фиксирован по размеру самой большой карты, добавленной на панель. Тогда вы просто меняете компоненты.

Прочтите раздел из учебника по Swing на Как использовать CardLayout для получения дополнительной информации и рабочих примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...