2015-11-02 49 views
1

我正在使用嵌入JavaFX中的WebView中的ace编辑器,但在滚动时遇到了一个小问题。JavaFX中的Ace编辑器WebView滚动问题(大步长)

滚动不连续,而是跳步大步长。

如果有人遇到过这个问题并解决了这个问题?任何帮助,将不胜感激。 (以下是嵌入在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); 
    } 
} 

回答

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,直到它固定的,你可能需要使用一种解决方法:

  • 使用Dropbox或类似主机的HTML和JS文件,为了有一个在线网址。
  • 处理一个读取html文件的本地字符串(我不确定这是否可以用于js所需的文件)。