В настоящее время я разрабатываю новый внешний вид и чувствую, и мне пришлось начинать с нуля по многим причинам, сейчас моя самая большая проблема - получить ширину и высоту строки в компонентах, которые имеют getText()
, чтобы определить, где это должно быть нарисовал, и я знаю, как получить его для обычного текста, но как это сделать, если он отображается как HTML-текст ??.
использование FontMetrics
действительно предоставило все, что нужно для простого текста, но использование его для html дает, как если бы оно было простым, поэтому я попробовал View.getGraphics()
и проделал то же самое с FontMetrics
объекта представления графика, но все та же, в то время как я хочу, чтобы размер текста был нарисован (различия, которые имеют значение, например, если он содержит <br />
высота не будет точной! или если шрифт изменяется в HTML-тегах и т. д .. .).
public Dimension getTextSize(JComponent c, Graphics g, String text) {
//this works if you want to get the size as if it's plain text
//and later in the drawing calculate the descent line distance to draw the text
g.setFont(c.getFont());
FontMetrics fontMetrics = g.getFontMetrics();
Dimension plaintTextSize = new Dimension(fontMetrics.stringWidth(text),fontMetrics.getHeight());
return plaintTextSize;
}
я пробовал выше с
View view = (View) JComponent.getClientProperty(BasicHTML.propertyKey);
и передать view.getGraphics()
методу getTextSize
, но все тот же. Я много искал об этом, но не смог найти никаких относительных результатов, и я ничего не узнал о том, какой класс использовать, и я могу не используйте TextLayout
, поскольку иногда JComponent
может не быть JTextComponent
.
Пожалуйста, помогите и спасибо.
Редактировать
кажется, что это почти невозможное, потому что другое решение будет с View.getPreferredSpan(int axsis)
, чтобы получить размер, но когда-то ненадежно масштабировать размер, я имею в виду, что в компонентах мы можем предсказать это конфликт, но как предсказать это в HTML-строке, нарисованной BasicHTML
, чтобы хотя бы обработать размер вручную.