2015-11-02 83 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所需的文件)。