我正在进行一些图形处理,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,它会返回一个更大但固定大小的矩形。
谢谢。
答案 0 :(得分:1)
在知道宽度之前无法计算高度。在处理Swing组件时,我认为您需要执行以下操作:
component.setSize(100, 1);
Dimension size = component.getPreferredSize();
或许您可以使用此posting中的概念: