«Оставьте все надежды, вы, кто входит [через Swing для создания игр]!»
Чтобы ответить на ваш вопрос, JPanels - это просто поверхность для рисования, как на доске или листе бумаги. Они не имеют ничего общего со стадиями или чем-то еще, кроме того, что вы можете рисовать, и контейнером для других подкомпонентов.
Чтобы ответить на вопрос, связанный с игрой, я бы порекомендовал вам не тратить время на использование компонентов Swing для создания игрового интерфейса. Хотя возможно , вы столкнетесь с кучей проблем с производительностью, которые просто съедят ваше время. Исходя из вашего вопроса, вы уже думаете о низкоуровневых вещах, таких как таймеры для планирования, и об отмене метода paintComponent()
- очень распространенная ошибка и дорога, на которую многие провалившиеся проекты тратят время, просто чтобы узнать, что это не так. лучший способ.
Если бы ваш вопрос был буквально тропой в лесу, которую вы могли видеть, вы заметили бы следующие вещи:
- Это хорошо протоптано (как кажется, самый прямой подход)
- Не за горами несколько игривых смертельных ям производительности и неясных, не кросс-платформенных настроек
- Вы должны выяснить, как использовать менеджер рисования Swing, чтобы делать то, что вы хотите, когда в большинстве случаев вам нужно прямое, детерминистическое управление конвейером / процессом рендеринга
- Он полон тел проектов, которые пытаются использовать Swing для игр, по странным (и глупым) причинам, таким как «Я хотел создать игру, которая использует только стандартную библиотеку Java». Ну, стандартная библиотека хороша и все, но в своей основе она была разработана для решения бизнес-задач, и, кроме всего прочего, была хороша для серверного и сетевого программного обеспечения. Если вы не используете хотя бы некоторые библиотеки gamedev, вы, вероятно, упускаете возможность использовать правильный инструмент для правильной работы. Swing определенно не был создан для использования в играх, поскольку он практически не отвечает потребностям разработчиков игр, если только вы не говорите о настольных приложениях / инструментах для создания и редактирования уровней и тому подобного.
Вместо этого используйте что-то вроде Slick2D (для 2D-игр) или jMonkeyEngine для 3D shtuff. Эти библиотеки предназначены специально для построения игр и избавят вас от необходимости заново изобретать колесо пресловутых слов, просто чтобы ваша игра заработала. У них также есть свои собственные сообщества, которые могут помочь вам с проблемами, связанными с библиотекой.
Кроме того, они уже решили некоторые хитрые кроссплатформенные проблемы, такие как работа с различными версиями OpenGL, и другие технические подробности, которые, держу пари, вас действительно не волнует, когда в конце день, что вы действительно хотите, это: «Эй, просто дай мне [произвольное разрешение], графически ускоренную поверхность для рисования, и не усложняй!»