□ В конструкторах с двумя параметрами JLabel(String, int) и JLabel (Icon, int) второй параметр задает горизонтальное размещение текста или изображения константами LEFT, CENTER, RIGHT, LEADING или TRAILING интерфейса SwingConstants. Этот интерфейс реализован в классе JLabel. Понятия leading и trailing зависят от установленной ло-кали. Для языков с написанием слева направо это левая и правая сторона области, для других, например арабского языка, наоборот.
Размещение можно потом изменить методом setHorizontalAlignment(int). Можно изменить и размещение по вертикали методом setVerticalAlignment(int) с константами
TOP, CENTER или BOTTOM.
□ Последний конструктор, JLabel(String, Icon, int), задает и строку, и изображение, и размещение, при этом строка располагается справа от изображения для языков с написанием слева направо. Изменить расположение текста относительно изображения по горизонтали и вертикали можно методами setHorizontalTextPosition(int) и setVerticalTextPosition (int) с такими же константами. По умолчанию текст от изображения отделяют 4 пиксела. Изменить это расстояние можно методом
setIconTextGap(int).
Например, создание надписи и размещение ее сверху и справа в выделенной для компонента области контейнера выглядит так:
JLabel l = new JLabel("Какая-то надпись", JLabel.RIGHT);
l.setVerticalAlignment(JLabel.TOP);
Если же мы хотим разместить в компоненте JLabel текст и изображение, причем текст расположить слева от изображения, оставив между ними 10 пикселов, то надо сделать примерно так:
JLabel l = new JLabel("Надпись",
new ImageIcon("myimage.gif"), JLabel.CENTER);
l.setHorizontalTextPosition(JLabel.LEFT); l.setIconTextGap(10);
Интересно, что Swing "понимает" разметку языка HTML и в строке можно с помощью тегов менять цвет, шрифт, создавать списки, размещать текст в нескольких строках: