У меня есть панель, производная от JPanel
. У меня есть пользовательский элемент управления, полученный из JLabel
. Я пытаюсь центрировать этот пользовательский JLabel
на своей панели.
Единственный известный мне способ сделать это, который будет работать, — это использовать нулевой макет ( setLayout(null)
), а затем вычислить пользовательскую точку JLabel setLocation()
, чтобы что он в нужном месте.
Пользовательский JLabel
физически перемещается с одной панели на эту панель в этом приложении, и я считаю, что расположение, ранее установленное в setLocation
, влияет на вещи. Однако, когда я устанавливаю его на (0,0), компонент поднимается в верхний левый угол.
BorderLayout
не работает, потому что, когда только 1 компонент предоставляется и помещается в BorderLayout.CENTER
, центральная часть расширяется, чтобы заполнить все пространство.
В примере, который я вырезал и вставил с другого сайта, использовались BoxLayout
и component.setAlignmentX(Component.CENTER_ALIGNMENT)
. Это тоже не сработало.
В другом ответе упоминалось переопределение функции панели getInset()
(думаю, так она называлась), но это оказалось тупиком.
Пока что я работаю с панелью с макетом GridBagLayout
и включаю объект GridBagConstraints
, когда вставляю пользовательскую JLabel
в свою панель. Однако это неэффективно. Есть ли лучший способ центрировать JLabel
в моем JPanel
?