Как установить межстрочный интервал / высоту в JLabel в Java Swing? - PullRequest
5 голосов
/ 24 июня 2010

У меня есть следующий код JLabel:

JLabel someJLabel = new JLabel("<html>first line<br>second line</html>");
someJLabel.setFont(new Font("Arial", Font.PLAIN, 16));

Я хотел бы иметь возможность контролировать высоту / расстояние между двумя линиями.

PS: Я также рассмотрел использование абзацев вместо линий переноса, но это то же самое.И я не знаю, сможете ли вы сделать это в HTML-теге без использования CSS (вы не можете использовать CSS в HTML-коде в JLabel в Java Swing).

Ответы [ 6 ]

5 голосов
/ 25 июня 2010

Это должно работать, но это не так.color: green работает, хотя.

content.add(new JLabel("<html><p style=\"line-height: 150%;\">hi<br>world</p></html>"));

Я думаю, высота строки не работает.Вот как бы вы это сделали, если бы использовали CSS, поэтому, возможно, вы не сможете сделать это таким образом. Вот хороший инструмент Я нашел, что вы можете использовать, чтобы проверить, будет ли ваш HTML работать быстро.

3 голосов
/ 25 июня 2010

Проверьте метод setStyleSheet (...) HTMLEditorKit. Я никогда не использовал его раньше, но я считаю, что он обеспечивает некоторую базовую поддержку.

В противном случае вы можете использовать JTextPane для управления межстрочным интервалом. Я думаю, что вы будете использовать:

StyleConstants.setLineSpacing(...);

Затем можно изменить передний план / фон и т. Д., Чтобы текстовая панель выглядела как метка.

2 голосов
/ 20 апреля 2013

Поскольку Java поддерживает тег и атрибут CSS margin , вы можете использовать следующее решение:

new JLabel("<html>first line<p style='margin-top:-5'>second line");

PS Теперь закрывать не нужноHTML-теги.

2 голосов
/ 25 июня 2010

Хм ... Мне кажется, CSS в JLabel работает, если придерживаться поддерживаемых свойств.Попробуйте padding (или margin) и font-size:

someJLabel = new JLabel("<html><body><p style=\"padding:10; font-size:30\">First line</p><p style=\"padding:10; font-size:20\">Second line</p></body></html>");
0 голосов
/ 25 июня 2010

Помогает ли установка пустой границы, например

label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

синтаксис метода BorderFactory.createEmptyBorder (int top, int left, int bottom, int right)

0 голосов
/ 25 июня 2010

Вы можете попробовать использовать две метки и установить расстояние между ними, а также пробел, используя LayoutManager.Мне самому нравится GridBoxLayout.

Редактировать: GridBagLayout.Упс!

...