Swing的BasicHTML.createHTMLView指标用法

2020年11月30日 105点热度 0条评论

我正在做一些图形处理,HTML是样式化显示内容的理想选择。我正在尝试重用swing的内置html支持,并且如果我对传递给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);

如果我用getPreferredSize()询问JLabel方向,则根本不考虑包装。如果尝试使用JEditorPane,它将返回一个较大的但固定大小的矩形。

谢谢。

解决方案如下:

在知道宽度之前无法计算高度。在处理Swing组件时,我认为您需要执行以下操作:

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

或者,也许您可​​以使用此
posting中存在的概念: