我正在为我的项目使用 JavaFX 编写自定义对话框。我需要一种变体但快速的模式来显示对话框内容。
我知道 controlsFX;实际上我正在使用它,但我想在 WebView 中显示内容,这样它会更易于控制。
问题是关于 WebView 的大小我想找到文档正文的高度并将 WebView 的大小设置为那个。
我尝试了以下 javascript hack,但在显示对话框之前,我得到的大小为 0,而在显示对话框之后,该值不可靠。有没有更好的解决方案,或者我应该忘记它并尝试嵌入支持 HTML 3 的 swing 组件?
WebView vw = new WebView();
vw.getEngine().loadContent("<p>This is my text</p><b>Another</b><p> This is a paragraph</p><ul><li>First cause</li><li>Second cause></li></ul>");
vw.setPrefSize(500, 50);
vw.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
// I see that executeScript doesn't work correctly even when the WebView is loaded
Integer h = (Integer) vw.getEngine().executeScript("document.body.offsetHeight");
System.out.println("scriptRES: " + h );
vw.setPrefSize(400, h);
vw.setMinSize(400, h);
vw.setMaxSize(400, h);
}
});
最佳答案
JavaFX 问题跟踪器中的功能请求涵盖了 WebView 的自动调整大小支持:
功能请求当前尚未实现或计划实现。您可以对功能请求投票或发表评论。
据我所知没有解决方法。早期版本的 WebView 似乎可以使用以下代码 engine.executeScript("document.width")
和 engine.executeScript("document.height")
。但是这些命令在我上次尝试时不再有效。
关于java - 将 JavaFX WebView 调整为文档正文所需的最小大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838965/