Как заставить текст перейти на кнопку панели? - PullRequest
3 голосов
/ 30 марта 2010

На данный момент у меня есть следующий код, который отлично работает.

label = new JLabel(panelLabel,SwingConstants.CENTER);
outputPanel.add(label,BorderLayout.CENTER);

Я получаю текст в центре панели (с точки зрения позиции слева направо и сверху вниз).

Теперь я хочу установить позицию снизу (и центр в терминах «влево-вправо»). Я попытался использовать ЮГ вместо ЦЕНТРА в первой строке. Компилятор не жалуется, но во время исполнения я получаю IllegalArgumentException: HorizontalAlignment. Что это?

Ответы [ 2 ]

5 голосов
/ 30 марта 2010

Используемый вами конструктор 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, как подсказку для менеджера макета.Это прикрепит метку к нижней части, и она будет иметь минимальную высоту (ту, которая необходима для отображения текста).В этом случае вертикальное выравнивание текста на самом деле не имеет значения.

1 голос
/ 30 марта 2010

Какой менеджер раскладки вы использовали для outputPanel? Вы пробовали

outputPanel.add(label,BorderLayout.PAGE_END);

Если бы вы установили менеджер компоновки outputPanel на BorderLayout, вы бы не получили эту ошибку. Насколько я понимаю, в этом нет ничего плохого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...