Использование показателей Swing BasicHTML.createHTMLView - PullRequest
0 голосов
/ 07 августа 2009

Я занимаюсь графической обработкой, а HTML - идеальный выбор для стилизации отображаемого контента. Я пытаюсь повторно использовать встроенную поддержку HTML в Swing, и она отлично работает, если я жестко кодирую высоту, переданную View.paint, но не могу понять, как определить, насколько высокими будут границы отображаемого содержимого во время выполнения. с учетом конкретной ширины.

Graphics2D g = ...
JLabel label = new JLabel("blah blah blah...");

View view = BasicHTML.createView(label, label.getText());
int minHeight = .... // Calculation magic goes here
Rectangle htmlSize = new Rectangle(0, 0, 50, minHeight);
g.setClip(htmlSize);
view.paint(g, htmlSize);

Если я спрашиваю направление JLabel с помощью getPreferredSize (), это вообще не учитывает перенос. Если я пытаюсь использовать JEditorPane, он возвращает прямоугольник большего, но фиксированного размера.

Спасибо.

1 Ответ

1 голос
/ 07 августа 2009

Высота не может быть рассчитана, пока ширина не известна. При работе с компонентами Swing я думаю, что вам нужно сделать что-то вроде:

component.setSize(100, 1);
Dimension size = component.getPreferredSize();

Или, может быть, вы можете использовать концепции, представленные в этой публикации :

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