Поменять центр JPanel в BorderLayout - PullRequest
1 голос
/ 26 апреля 2010

У меня есть JPanel, сидящая внутри центральной позиции BorderLayout JFrame. Как я могу поменять текущий JPanel на новый?

Ответы [ 4 ]

1 голос
/ 26 апреля 2010

Просто добавьте компонент в центр и повторно проверьте () родительский контейнер

container.add(BorderLayout.CENTER, newPanel);
container.revalidate();
1 голос
/ 26 апреля 2010

Используйте Макет карты , который управляет этим для вас.

1 голос
/ 26 апреля 2010

Вы пробовали что-то вроде:

void swapCenterPanel(JFrame frame, JPanel oldPanel, JPanel newPanel) {
    frame.getContentPane().remove(oldPanel);
    frame.getContentPane().add(newPanel, BorderLayout.CENTER); 
}
0 голосов
/ 12 мая 2015

Я получил это, чтобы работать без проблем индекса z методом проб и ошибок.

Давайте назовем x JPanel с BorderLayout
давайте назовем y Component, который в настоящее время занимает BorderLayout.Center
давайте назовем z JPanel для замены в центральном положении.

   x.remove(y);
   x.add(z);
   x.repaint();
   x.revalidate();

Я обнаружил, что если я попытался удалить существующий JPanel через сам LayoutManager, он не работает. Вместо этого, если вы используете метод удаления JPanel, документ Java говорит, что уведомляет макеты метод removeLayoutComponent и, похоже, делает свое дело.

...