缩放WebView以适合内容

时间:2014-02-01 02:30:29

标签: java javafx

在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年从哪里来?

0 个答案:

没有答案