Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 自动调整JavaFX2 HTMLEditor控件的大小_User Interface_Javafx 2_Rich Text Editor - Fatal编程技术网

User interface 自动调整JavaFX2 HTMLEditor控件的大小

User interface 自动调整JavaFX2 HTMLEditor控件的大小,user-interface,javafx-2,rich-text-editor,User Interface,Javafx 2,Rich Text Editor,我正在尝试使用HTMLEditor创建一个可编辑控件(我想要一个像Swing的JEditorPane或JTextPane这样的富文本窗格,但似乎我需要等待几年才能实现)。我想让用户在文本中输入,控件也随之增长。我曾尝试在滚动条出现时捕捉事件并增大大小,直到它消失,但我无法确定如何等待JavaFX线程实际重新调整其父控件的大小 可能还有比这更好的方法。。。有什么想法吗?如果删除了文本,有没有办法减少它 TIA Mike Watts对于编辑控件,请使用类似于此或的Web视图 使用类似于此的方法与it

我正在尝试使用HTMLEditor创建一个可编辑控件(我想要一个像Swing的JEditorPane或JTextPane这样的富文本窗格,但似乎我需要等待几年才能实现)。我想让用户在文本中输入,控件也随之增长。我曾尝试在滚动条出现时捕捉事件并增大大小,直到它消失,但我无法确定如何等待JavaFX线程实际重新调整其父控件的大小

可能还有比这更好的方法。。。有什么想法吗?如果删除了文本,有没有办法减少它


TIA Mike Watts

对于编辑控件,请使用类似于此或的Web视图


使用类似于此的方法与it进行交互。你可以。运行一个使用and轮询编辑控件文本维度的。对于编辑控件,请使用类似此或a的WebView


使用类似于此的方法与it进行交互。你可以。运行一个,使用and轮询编辑控件的文本维度。

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

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

在WebView组件的html中,在所有文本块周围添加了标记

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


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

[旁注:我添加了这个作为答案,尽管它只是jewelsea的详细信息-我无法在作为注释回复时格式化代码]

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

在WebView组件的html中,在所有文本块周围添加了标记

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


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

多亏了这一点——是的,我曾考虑过这一点,但正如您可能理解的那样,这是一个相当曲折的过程(创建从Java编写的JavaScript,如果使用JQuery,则需要链接到外部库),因此测试非常耗时,很难顺利实现。我希望用好的ol'Java来编写它……我已经把它设置为可接受的答案,因为它似乎是唯一合理的,所以再次感谢你的答案。问题(正如我所怀疑的)是试图链接到JQuery——我已经为此打开了另一个问题!多亏了这一点——是的,我曾考虑过这一点,但正如您可能理解的那样,这是一个相当曲折的过程(创建从Java编写的JavaScript,如果使用JQuery,则需要链接到外部库),因此测试非常耗时,很难顺利实现。我希望用好的ol'Java来编写它……我已经把它设置为可接受的答案,因为它似乎是唯一合理的,所以再次感谢你的答案。问题(正如我所怀疑的)是试图链接到JQuery——我已经为此打开了另一个问题!使用jQuery的height()函数尝试了这一点:没有上面显示的效果好(乍一看操作有点不可预测)。更重要的是,将jQuery放在那里是一件痛苦的事情:我最终将jQuery.js放在了[java]sources目录中;使用
getClass()(从第一眼看,这个操作有点不可预测)。此外,把jQuery放在那里是一件痛苦的事情:我最终把jQuery.js放在了[java]源目录中;使用
getClass().getResourceAsStream(“jQuery.js”)
将文件读入字符串,然后在WebView上设置html时,将该字符串作为脚本写入(而不是使用
src
属性)。
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);
    }
}