带有Java和And webkit的HTML编辑器

我想添加所见即所得的HTML编辑器到我的Java程序。
我的想法是做这样的事情,但不是与python - 与Java。

我知道一些选择和他们的问题:

  • HTMLEditorKit - 不够复杂。
  • JWebpane - 童话故事。
  • QtWebKit - 不是开源的。
  • JWebEngine - 不是开源的。
  • 中期选举 - 简单。
  • Lobo项目 - 不支持contenteditable属性。
  • JavaXPCOM - 我没有成功在我的Mac OS X 10.6上运行它。
    无论如何,我只是不想使用它,因为Gecko比webkit慢。
  • 这就是我选择使用org.eclipse.swt.browser包中的浏览器对象的方式。

    现在,我有下面的代码:
    该代码首先创建一个浏览器对象的实例。
    之后,它会在body标签上加载带有contenteditable='true'属性的HTML页面。
    如果它加载一个页面,它应该为body标签添加contenteditable='true'属性,并且当它保存页面时,它应该将其删除。

    我的问题是:

  • 如何获取已编辑的HTML代码?
  • 我怎么知道光标在踩?
  • 如何知道某些文字是否突出显示?
  • 或者,一般来说:

  • 如何用Browser对象和ontenteditable ='true'属性创建一个单词拥有者?
  • 可能吗?
  • 这是在Java中所见即所得的HTML编辑器的正确方法吗?
  • 在那里的任何例子?
    我已经检查过SWT片段 - 没有多大帮助。
  • 非常感谢。

    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();
     }
    }
    

    DJ Native Swing项目有几个HTML编辑器,使用SWT浏览器实现(这是一个实现细节):http://djproject.sourceforge.net/ns


    我喜欢你问了一些非常具体的问题! 在你把手弄脏之前做好头脑风暴。

    幸运的是,您的问题有一个相当通用的解决方案:只需在浏览器中运行JavaScript即可。

    例如:

    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() 。 我不确定是否有更好的方法来做到这一点。


    你的这一个tinymc:http://tinymce.moxiecode.com/它有很好的文档,你可以将它集成到几乎任何现有的代码,因为它有一个很好的界面和大量的插件。

    链接地址: http://www.djcxy.com/p/48765.html

    上一篇: HTML Editor with Java and And webkit

    下一篇: What are your most useful custom ASP.NET MVC 2.0 Validation Attributes