Уместно ли расширять JPanel для создания поверхности рисования для 2D-игры? - PullRequest
0 голосов
/ 25 февраля 2012

Я конвертирую 2D-игру из апплета в JFrame. Я знаю, что должен добавить JPanel к JFrame и использовать JPanel в качестве моей поверхности рисования, но я не уверен, что именно я должен быть подклассом. Я пробовал это с JFrame, но я читал, что обычно нет необходимости и плохая идея расширять JFrame (я все равно не добавлял никаких дополнительных функций, так что это имеет смысл) Мне нужно переопределить метод JPanel paintComponent(), поэтому сейчас я склоняюсь к расширению JPanel. Есть ли лучший способ создания игровой поверхности 2D или расширение JPanel и добавление этого в JFrame подходящим способом сделать это?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

Нет, лучшего способа нет, это очень хороший вариант. Если вы расширите JFrame (другой вариант), ваша анимация будет мигать в большинстве ОС семейства Windows.

JPanel является чистым компонентом колебания и лучше реагирует в Java, чем одноранговый компонент, такой как JFrame.

Ваш выбор хороший, продолжайте веселиться и программируйте.

0 голосов
/ 25 февраля 2012

обновление

Мои знания в этой области выросли с тех пор, как я первоначально ответил на вопрос, и я согласен с @Snicolas, что вам следует использовать JPanel.

JPanel (потому что это компонент свинга) имеет встроенную поддержку двойной буферизации (AWT нет) и имеет лучшую производительность (так что я слышал, но у меня нет опыта из первых рук).

Вы можете найти эту статью полезной: http://www.oracle.com/technetwork/java/painting-140037.html#swing

оригинальный ответ:

Я рекомендую вам подкласс Canvas или Component или JComponent. Я предпочитаю холст. Вы должны прочитать 2d графический учебник .

обновление

Используйте Canvas, потому что он получает все события пользовательского ввода и не является багажом контейнеров. читать дальше . Например, панели не получают все события ввода мыши.

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