在Swing中,如果我像这样创建一个JEditorPane:
JEditorPane jep = new JEditorPane();
jep.setSize(300, Integer.MAX_VALUE);
jep.setText(content);
int wrapHeight = jep.getPreferredSize().height;
当宽度为300时, wrapHeight
给出了内容的高度,然后我可以使用它来围绕其内容包装组件。
我正在尝试使用JavaFX中的WebView做同样的事情,但当我这样做时:
WebView wv = new WebView();
wv.setMaxWidth(300);
wv.getEngine().loadContent(content);
int wrapHeight = wv.getPrefHeight();
(已将WebView添加到窗格中),wrapHeight
仍为600(可能是默认值)。
在回答here后,我尝试插入行
String heightText = WV.getEngine().executeScript(
"window.getComputedStyle(document.body, null).getPropertyValue('height')"
).toString();
但heightText
总是以0px的形式返回。
将内容加载到WebView后,如何确定固定宽度的内容高度?
更新: 如果我致电:
engine.documentProperty().addListener(new ChangeListener<Document>() {
@Override
public void changed(ObservableValue<? extends Document> prop, Document oldDoc, Document newDoc) {
String heightText = WV.getEngine().executeScript(
"window.getComputedStyle(document.body, null).getPropertyValue('height')").toString();
double height = Double.valueOf(heightText.replace("px", ""));
System.out.println(height);
}
});
我得到的返回值为2023.0。但是,加载内容的高度远低于 - 低于500像素。 2023年从哪里来?