Используемый вами конструктор JLabel JLabel(String label, int horizontalAlignement)
.
Как определено в javadoc , это int должно быть только в определенных значениях:
JLabel public JLabel (String text, int horizontalAlignment)
Создает экземпляр JLabel с указанным текстом и горизонтальным выравниванием.Ярлык центрируется вертикально в области отображения.
Параметры:
text - текст, отображаемый надписью.
horizontalAlignment - Одна из следующих констант, определенных в SwingConstants: LEFT, CENTER, RIGHT, ВЕДУЩИЙ или ТРЕЙЛИНГ.
Это значение определяет, где выровнен текст, внутри JLabel.Вы не можете использовать «SOUTH» здесь, и именно поэтому вы получаете исключение «InvalidArgument».
Если вы хотите, чтобы ваш текст располагался внизу надписи, вы должны использовать setVerticalAlignment (int) , с Swingconstants.BOTTOM
.Это предполагает, что ваша метка отцентрирована и может занять большую высоту на вашей панели.
Если вы используете BorderLayout для этой панели, вы можете попытаться добавить метку с BorderLayout.SOUTH
, как подсказку для менеджера макета.Это прикрепит метку к нижней части, и она будет иметь минимальную высоту (ту, которая необходима для отображения текста).В этом случае вертикальное выравнивание текста на самом деле не имеет значения.