在我的JavaFX项目中,我试图通过WebView
将 TinyMCE编辑器集成为HTML富文本编辑器。这是一个演示应用程序:
package tinydemo;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class TinyDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Demo");
WebView webView = new WebView();
webView.getEngine().load(TinyDemo.class.getResource("simple.html").toExternalForm());
StackPane root = new StackPane();
root.getChildren().add(webView);
primaryStage.setScene(new Scene(root, 500, 400));
primaryStage.show();
}
}
我使用的是Netbeans IDE,包视图是:
simple.html
的内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Simple theme example</title>
<script type='text/javascript' src='jquery-1.5.2.min.js'></script>
<script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var wewe = document.getElementById('wewe');
wewe.innerHTML += '<br/>protocol: '+ document.location.protocol;
tinyMCE.init({
mode : "textareas",
theme : "simple"
});
});
</script>
</head>
<body>
<div id="wewe"></div>
<h3>Simple theme example</h3>
<textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
This is some example text that you can edit inside the <strong>TinyMCE editor</strong>.
</textarea>
<script type="text/javascript">
if (document.location.protocol == 'file:') {
alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
}
</script>
</body>
</html>
现在,当我从Netbeans运行应用程序时,TinyMCE编辑器会成功加载检测到的文件协议。
但是,当我从 dist 文件夹下的命令行运行生成的 TinyDemo.jar 时,我明白了:
无法加载TinyMCE编辑器的地方。我认为问题是jar中TinyMCE的绝对/相对路径引用,但无法解决它。任何帮助表示赞赏。感谢。
答案 0 :(得分:3)
根据此forum discussion thread相对资源加载,目前只能在JavaFX的2.1 developer preview中正常工作,而不能在2.0GA版本中正常工作。
如果在升级到Java预览版的JavaFX之后,从jar加载资源仍然不起作用,那么你可以在类路径上部署TinyMCE但在打包的jar之外,以便使用(例如)加载它文件或http protcols而不是jar协议。或者您可以开发一个自定义协议处理程序,它从jar中加载资源,如引用的线程中所述。