В настоящее время я работаю над макетами в Java. Я пытаюсь комбинировать разные макеты. Итак, я создал экран входа в систему, используя Spring Layout, GridLayout и Border Layout. MainFrame (JFrame) использует GridLayout. GridLayout состоит из 2 панелей (северная панель и основная панель). Основная панель состоит из Jlabel, JTextfield и JButton, с которыми у меня нет проблем. Моя проблема в северной панели, которая использует макет границы. Он содержит JLabel (lblWelcome). Я пытался поместить метку в центр панели с помощью Border Layout, но она все еще выравнивается по левому краю. Это приведенный ниже код:
JLabel lblWelcome = new JLabel("Welcome To The Login Screen");
JPanel northPanel = new JPanel(new BorderLayout());
northPanel.setBackground(Color.green);
northPanel.add(lblWelcome, BorderLayout.CENTER);
Экран входа:




Ваш JLabel на самом деле правильно центрирован, но его текст - нет.
Просто измените его создание на:
JLabel lblWelcome = new JLabel("Welcome To The Login Screen", SwingConstants.CENTER);
Это может быть нормальным поведением, так как вы добавляете к нему только один компонент, он занимает все пространство.
Но я действительно не увидел никакой разницы в моем коде выше, когда я изменил его на Border Layout.LINE_START. У меня был тот же результат, когда я использовал Border Layout.LINE_START и Border Layout.CENTER. Любая идея, почему?