В Java / Swing нормально ли создавать новые "основные" объекты JPanel, когда этого требует пользователь? - PullRequest
1 голос
/ 15 августа 2010
  1. Мне любопытно, является ли хорошей практикой создание нового основного объекта JPanel каждый раз, когда пользователь желает вернуться к этому JPanel из последующей JPanel?

  2. FYI, мое приложение Swing имеет JFrame, первым объектом которого является mainJPanel с тремя JButton (один из них - кнопка Review).

  3. Допустим, пользователь нажимает кнопку обзора.Программа вызывает removeall () на панели содержимого JFrame и создает новый объект reviewJpanel, который имеет JTable и JButton (назовем его Finish Review).

  4. Допустим, пользователь завершает просмотри нажимает кнопку Готово.Программа намерена вернуться к экрану mainJPanel, поэтому она создает новый объект mainJPanel, точно такой же, как в пункте 2 выше.

  5. Мне интересно, является ли это избыточным для создания новогообъект mainJPanel каждый раз?Но если бы я как-то сохранил mainJPanel, как бы я мог удалить обзор JPanel из JFrame, когда пользователь нажимает кнопку «Завершить обзор»?

  6. Надеюсь, эти вопросы полезны для других пользователейкачаться.У меня есть пара книг по Swing, и, к сожалению, они, кажется, упускают из виду вопрос обработки «основных» JPanels и нескольких последующих JPanels и переключения туда-сюда.

1 Ответ

4 голосов
/ 15 августа 2010

Если у вас есть только одна панель за раз, просто поменяйте панели на setContentPane. Когда вы впервые создаете свой фрейм, выполните frame.setContentPane(mainJPanel);. Затем, когда пользователь нажимает кнопку, выполните frame.setContentPane(otherPanel);. mainJPanel будет заменен новой панелью, и когда пользователь закончит, вы можете снова использовать frame.setContentPane(mainJPanel);, чтобы вернуть основную панель обратно. Вам не нужно тратить ресурсы на воссоздание панели, и это быстрее и эффективнее, чем использование removeAll и добавление новой панели.

...