1

我正在尝试使用 HTMLEditor 制作一个可编辑的控件(我想要一个像 Swing 的 JEditorPane 或 JTextPane 这样的富文本窗格,但似乎我需要等待几年)。我想让用户输入文本并且控件会变得适合。我尝试在滚动条出现时捕获一个事件并增加大小直到它消失,但我不知道如何等到 JavaFX 线程实际重新调整其父控件的大小。

可能有比这更好的方法......有什么想法吗?如果文本被删除,任何想法如何减少它?

TIA 迈克·沃茨

4

2 回答 2

1

对于编辑控件,使用contenteditable 设置为 true的 WebView ,如本示例自定义 HTMLEditor

使用类似于此编辑器的Java/JavaScript 桥与其交互。您可以使用 JQuery 编写 WebView 脚本。运行时间轴,使用JQuery 维度查询脚本轮询编辑控件的文本维度,并适当调整控件大小

于 2012-11-21T09:27:45.717 回答
0

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

这在一定程度上起到了作用:

在 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 可能是一个更好的解决方案,但如果我解决了包含库的问题,我会更新它;-)

于 2012-11-28T20:03:34.457 回答