У меня есть панель, полученная из 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
?