Как изменить размер шрифта JLabel для взятия максимального размера

У меня есть a JLabel в Контейнере. defaut размер шрифта является очень небольшим. Я хотел бы это текст JLabel взять максимальный размер.

Как я могу сделать это?

66
задан Neuron 8 June 2018 в 11:04
поделиться

2 ответа

Не самый красивый код, но следующий будет подбирать подходящий размер шрифта для JLabel под названием label таким образом, чтобы текст внутри максимально соответствовал интерьеру, не выходя за пределы метки:

Font labelFont = label.getFont();
String labelText = label.getText();

int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);
int componentWidth = label.getWidth();

// Find out how much the font can grow in width.
double widthRatio = (double)componentWidth / (double)stringWidth;

int newFontSize = (int)(labelFont.getSize() * widthRatio);
int componentHeight = label.getHeight();

// Pick a new font size so it will not be larger than the height of label.
int fontSizeToUse = Math.min(newFontSize, componentHeight);

// Set the label's font size to the newly determined size.
label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));

В основном, код смотрит, сколько места занимает текст в JLabel , используя FontMetrics , а затем использует эту информацию для определения наибольшего размера шрифта, который можно использовать без переполнения текста из JLabel .

Приведенный выше код можно вставить, возможно, в метод paint в JFrame , который содержит JLabel , или в какой-либо метод, который будет вызываться, когда шрифт размер необходимо изменить.

Ниже приведен снимок экрана с приведенным выше кодом в действии:

alt text
(источник: coobird.net )

72
ответ дан 24 November 2019 в 14:50
поделиться
label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));

взято из Как использовать HTML в компонентах Swing

107
ответ дан 24 November 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: