Вы ищете JFrame
с CardLayout
. Некоторый фон:
A JFrame - физическое окно. Он поставляется с заголовком и тремя кнопками: сворачивает, максимизирует и закрывает. Подумайте об этом как о кадре.
A JPanel является «владельцем контента». Как правило, вы помещаете свои другие компоненты (кнопки, анимации, что угодно) на JPanel, а затем удаляете JPanel в JFrame. Используя наш пример с рамкой, JPanel будет фотобумагой, которую вы положили в рамку с картинками. Другими компонентами тогда будет фактическое содержимое самого изображения, а то, что у вас есть в конце, - это приятное изображение ... или в вашем случае приложение.
Установка JFrame для использования CardLayout
по существу позволяет вам иметь несколько JPanels внутри одного и того же JFrame одновременно, пока отображается только по одному. Итак, для вашего приложения у вас будет (по крайней мере) два JPanels: один для меню и один для игры. Когда приложение запускается, вы показываете MenuPanel. Когда пользователь нажимает «начать», вы переключаетесь на GamePanel. MenuPanel будет помещен в фоновом режиме и будет недоступен, пока вы снова не вызовете его на передний план.
Если, с другой стороны, вы создаете несколько JFrames, у вас будет два или более физически отдельных окна, которые можно обрабатывать индивидуально.На самом деле это может быть классно для разработки игр. Хотя для создания и привязки графического интерфейса для второго окна требуется больше времени, вы можете использовать это окно в настройках игры в реальном времени (скорость стрельбы, сила пули, скорость игрока и т. Д.)
См. [Использование нескольких JFrames, Good/Bad Practice?] (Http://stackoverflow.com/a/9554657/418556) –
* «В большинстве учебных пособий мы говорим, что мы сделайте JFrame наследующим от JFrame. Но что, если я хочу много кадров? »* Не расширяйте кадры или другие контейнеры верхнего уровня. Вместо этого создайте & используйте экземпляр одного. Я боюсь, что вы нашли неправильные учебники. Я рекомендую [Java Tutorial: Создание графического интерфейса с JFC/Swing] (http://docs.oracle.com/javase/tutorial/uiswing/). –
@AndrewThompson благодарит за первую ссылку. Действительно полезно! О расширении от JFrame, я знаю, что в некоторых случаях я должен просто создавать экземпляры JFrame, отдельные кадры получают отдельные экземпляры; но я почему-то думаю, что есть лучший способ, чем делать это – krato