我想将WYSIWYG HTML编辑器添加到我的Java程序中 我的想法是做this之类的事情 但不是python - 使用Java。
我知道几个选项及其问题:
这是我选择使用的方式 来自 org.eclipse.swt.browser 包的 Browser Object 。
目前,我的代码如下:
代码,首先创建浏览器对象的实例
在此之后,它会在正文标记上加载带有contenteditable='true'
属性的HTML页面
如果它加载一个页面,它应该将contenteditable='true'
属性添加到body标签,当它保存页面时,它应该删除它。
我的问题是:
或者,一般来说:
非常感谢。
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class editor {
public static void main(String [] args) {
String html = "<html><title>Editor</title>"
+ "<body contenteditable='true'>"
+ " <h2>All the Page is ditable!!!!!</h2>"
+ "<p>Heres a typical paragraph element</p>"
+ "<ol><li>and now a list</li>"
+ "<li>with only</li>"
+ "<li>three items</li>"
+ "</ol></body></html>";
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Browser browser;
try {
browser = new Browser(shell, SWT.BORDER);
}
catch (SWTError e) {
System.out.println(e.getMessage());
display.dispose();
return;
}
Composite comp = new Composite(shell, SWT.NONE);
comp.setLayout(new FillLayout(SWT.ALL));
browser.setText(html);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
答案 0 :(得分:2)
DJ Native Swing项目有几个HTML编辑器,使用SWT浏览器实现(这是一个实现细节):http://djproject.sourceforge.net/ns
答案 1 :(得分:1)
我喜欢你问了一些非常具体的问题!在你弄脏之前,好好集思广益。
幸运的是,您的问题有一个相当通用的解决方案:只需run JavaScript in the browser。
例如:
Browser browser = new Browser(parent, SWT.NONE);
// Just to be sure we can use JavaScript
browser.setJavascriptEnabled(true);
boolean result = browser.execute("alert('Hello SWT!')");
if (result) {
System.out.println("script executed");
} else {
System.err.println("script failed to execute");
}
当然,您可能希望将数据从浏览器发送回SWT;在这种情况下,您可能最终会在最坏的情况下解析browser.getText()
。我不确定是否有更好的方法。
答案 2 :(得分:1)
这是一个小问题:http://tinymce.moxiecode.com/ 它有很好的文档,你可以将它集成到几乎任何现有的代码中,因为它有一个很好的界面和很多插件。