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