Я хочу добавить WYSIWYG HTML-редактор в мою программу на Java.
Моя идея - сделать что-то вроде this , но не с python - с Java.
я знаю о пареопций и их проблем:
- HTMLEditorKit - недостаточно сложный.
- JWebpane - сказка.
- QtWebKit - не с открытым исходным кодом.
- JWebEngine - не с открытым исходным кодом.
- metaphaseeditor - для простого.
- Проект Lobo - не поддерживает атрибут contenteditable.
- JavaXPCOM - Не удается запустить его на моем Mac OS X 10.6.
В любом случае, я просто предпочитаю не использовать его, потому что Gecko медленнее, чем webkit.
Именно так я решил работать с Browser Object из org.eclipse.swt.browser Пакет.
Сейчас у меня есть код ниже:
Код, сначала создайте экземпляр объекта браузера.
Aпосле этого он загружает HTML-страницу с contenteditable='true'
атрибутами в теге body.
Если он загружает страницу, он должен добавить contenteditable='true'
атрибутов в тег body, а при сохранении страницы он должен удалить ее.
Мои вопросы:
- Как получить отредактированный HTML-код?
- Как узнать, на что наведен курсор?
- Какузнать, выделен ли какой-либо текст?
Или вообще:
- Как мне создать обладатель слов с помощью Browser Object и ontenteditable= «истинные» атрибуты?
- возможно ли это?
- это правильный путь для WYSIWYG HTML-редактора в Java?
- Есть ли какие-нибудь примеры?
Я уже проверял 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();
}
}