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