setBounds
работает только для контейнеров, для которых установлен макет null
. (Или для перемещения кадров на рабочем столе.)
Диспетчер компоновки
JPanel
по умолчанию - FlowLayout
, который размещает компоненты в горизонтальном порядке и перемещается в новую строку, когда ток заполнен (как текст на странице).
Использование макета null
и setBounds
не рекомендуется для размещения графического интерфейса пользователя - он очень хрупкий - слишком многое зависит от размера контейнера / фрейма, а также от размера, разрешения и настроек шрифта рабочего стола может легко сломать макет.
Прочитайте раздел Использование менеджеров макетов учебного руководства по Swing, чтобы выяснить, какие менеджеры макетов могут помочь вам достичь того, чего вы хотите.