GUI не очень подходит для создания игры.
GUI (Graphical User Intreface, Swing in java) - это набор кнопок и другого текстового / графического содержимого, в отличие от того, с чем вы можете создать игру: движок 3D-рендеринга, такой как OpenGL (большинство обычно используется на Java, будь то в рамках или через библиотеки низкого уровня).
У вас здесь есть выбор:
Вы можете либо решить сделать более простой проект, например консольную программу, но она будет работать в графическом интерфейсе, например, в программе графического интерфейса для перемещения файлов.
или вы можете научиться OpenGL или подобному (JOGL для Java) и сделать эту игру!
( JavaFX также может работать, но я не знаю много об этом)
Теперь о дизайне.
Как правило, вы хотите иметь основной класс "looping", который будет выводить каждый кадр и т. Д.
Основной класс «looping» должен наследоваться от интерфейса, который позволяет всем другим компонентам получать частицу рендеринга, счетчик времени и т. Д.
Затем вам нужно несколько компонентов, один для мяча, другой для любого другого физического объекта (не забудьте заставить их реализовать интерфейс «физика» и добавить их в качестве «ссылок на физические объекты» в ваш основной класс, чтобы физика для них рассчитывается для каждого кадра!), одна для фона и одна для пользовательского ввода.
Вы также можете добавить несколько других, каждый из которых будет выполнять определенное действие.