Хммм ... Я не смог заставить твой код работать. Когда я сделал моды для запуска, я плотно обернул панель рамой.
Я предполагаю, что вы хотите, чтобы верхняя панель находилась посередине большей рамки с пустым пространством со всех сторон. Обычный способ сделать это - создать главную панель с нужным вам размером рамки. Затем, используя менеджер макетов, такой как BorderLayout, добавьте дополнительные JPanels на главную панель. Верхняя панель будет иметь размеры, которые вы хотите, а окружающие панели обеспечат «заполнение». Если окружающие панели созданы с пустыми границами, это должно выглядеть так, как будто верхняя панель окружена пустой областью.
EDIT
Вот кое-что, что может быть немного ближе к вашему намерению. BorderLayout, вероятно, не дает желаемый приоритет размера панели. Может быть, GridBagLayout?
(ns com.so.abspos
(:import (javax.swing JFrame JPanel)
(java.awt BorderLayout))
(:gen-class true))
(defn frame []
(let [
center-panel (doto (JPanel.)
(.setOpaque true)
(.setVisible true)
(.setSize 225 50)
;(.setBounds 25 25 250 75)
(.setBorder (javax.swing.border.LineBorder. (java.awt.Color. 255 0 0 255))))
top-panel (doto (JPanel.)
(.setSize 625 25))
left-panel (doto (JPanel.)
(.setSize 25 75))
bottom-panel (doto (JPanel.)
(.setSize 625 300))
right-panel (doto (JPanel.)
(.setSize 250 75))
main-panel (doto (JPanel.)
(.setLayout (new BorderLayout))
(.add left-panel BorderLayout/WEST)
(.add top-panel BorderLayout/NORTH)
(.add center-panel BorderLayout/CENTER)
(.add right-panel BorderLayout/EAST)
(.add bottom-panel BorderLayout/SOUTH))
aframe (doto (JFrame.)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(.setResizable false)
(.setSize 300 625)
(.setVisible true)
(.setContentPane main-panel))]))
(defn -main
"Just create the frame and show it."
[]
(frame))