自动重新调整JavaFX 2 HTMLEditor控件的大小

时间:2012-11-19 17:02:19

标签: user-interface javafx-2 rich-text-editor

我正在尝试使用HTMLEditor进行可编辑的控制(我喜欢像Swing的JEditorPane或JTextPane这样的富文本窗格,但似乎我需要等待几年才能实现)。我希望用户输入文本,控件增长以适应。我已经尝试在滚动条出现时捕获一个事件并增加大小直到它消失但我无法理解如何等待JavaFX线程实际上重新调整其父控件的大小。

可能有更好的方法来做到这一点......任何想法?任何想法如果删除文本如何减少它?

TIA Mike Watts

2 个答案:

答案 0 :(得分:1)

对于编辑控件,请使用contenteditable set to trueexamplecustomized HTMLEditor的WebView。

使用与此Java/JavaScript bridge类似的editor与其互动。你可以script the WebView using JQuery。运行Timeline,使用JQuery dimension query scriptadjust the control size appropriately轮询编辑控件的文字维度。

答案 1 :(得分:0)

[旁注:我已经添加了这个作为答案,即使它只是来自jewelsea的详细信息 - 我在回复评论时无法格式化代码]。

这是在某种程度上起作用的:

在WebView组件的html中,在所有文本块周围添加了一个标记<div id='measured'>

使用setOnKeyPressed向WebView添加了一个处理程序,并调用checkHeight()

private int lastOffsetHeight;


private void checkHeight() {
    int newHeight = (Integer)webview.getEngine().executeScript(
            "document.getElementById(\"measured\").offsetHeight;") + 14;

    if (newHeight != lastOffsetHeight) {
        lastOffsetHeight = newHeight;
         webview.setPrefHeight(newHeight);
    }
}

这还不错,主要问题是如果删除了所有文本,那么WebView组件将删除div。正如jewelsea所提到的,JQuery可能是一个更好的解决方案,但如果我解决了包含库的问题,我会更新这个; - )