我正在使用嵌入在JavaFX中的WebView中的ace编辑器,但是在滚动时面临一些小问题。
滚动不是连续的,而是以大步长跳跃。
如果有人在此之前遇到过此问题并修复此问题?任何帮助,将不胜感激。 (以下是嵌入在webview中的ace编辑器演示)。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class AceEditorExample extends Application {
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
webView.getEngine().load("https://ace.c9.io/demo/emmet.html");
AnchorPane.setLeftAnchor(webView, 0d);
AnchorPane.setTopAnchor(webView, 0d);
AnchorPane.setRightAnchor(webView, 0d);
AnchorPane.setBottomAnchor(webView, 0d);
primaryStage.setScene(new Scene(new AnchorPane(webView), 400, 300));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:2)
获得更流畅的滚动的解决方案相对容易:
首先,您需要拥有html文件的本地副本。下载emmet.html
和所需的js文件。
编辑html文件,找到定义editor
的脚本:
<script>
...
require(["ace/ace", "ace/ext/emmet"], function(ace) {
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
...
});
</script>
您可以在此处调整滚动速度。这对我来说很好:
<script>
...
require(["ace/ace", "ace/ext/emmet"], function(ace) {
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
// Adjust scrolling speed:
editor.setScrollSpeed(0.05);
...
});
</script>
现在保存文件。
第二部分应该像加载本地emmet.html
:
webEngine.load(getClass().getResource("emmet.html").toExternalForm());
但是由于JDK 8u60中的bug,在修复之前,您可能需要使用解决方法: