Подтвердить что ты не робот

Как использовать HTML и CSS в качестве графического интерфейса приложения Java?

Я хочу создать новый Git клиент с чистым графическим интерфейсом.

Можно ли использовать мощь HTML, CSS и JavaScript в Java-приложении?

Я хотел бы использовать Java + JGit для моделей Java для контроллеров и HTML + CSS + JavaScript для просмотров.

Мне не нужна модель клиент-сервер. Я хотел бы хорошо интегрировать Java и HTML. Событие DOM запускает события непосредственно на контроллер Java. Таким образом, можно было бы создать богатое автономное приложение.

4b9b3361

Ответ 1

Вы можете встроить компонент веб-браузера в свое приложение Java Swing/JavaFX Desktop, которое отображает графический интерфейс, построенный с использованием HTML5 + CSS + JavaScript. Вы можете увидеть статью, в которой описывается, как это сделать на http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

Одна из библиотек Java Swing/JavaFX, которая позволяет внедрять Chromium в приложения Java, JxBrowser. Используя JxBrowser API, вы можете загружать любую веб-страницу и работать с ее DOM и JavaScript. Вы даже можете вызывать методы Java из кода JavaScript и наоборот. Например:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.JSFunctionCallback;
import com.teamdev.jxbrowser.chromium.JSObject;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;

public class JavaScriptJavaSample {
    public static void main(String[] args) {
        Browser browser = new Browser();
        browser.addLoadListener(new LoadAdapter() {
            @Override
            public void onFinishLoadingFrame(FinishLoadingEvent event) {
                if (event.isMainFrame()) {
                    Browser browser = event.getBrowser();
                    JSObject window = (JSObject)
                            browser.executeJavaScriptAndReturnValue("window");
                    window.setProperty("MyFunction", new JSFunctionCallback() {
                        @Override
                        public Object invoke(Object... args) {
                            for (Object arg : args) {
                                System.out.println("arg = " + arg);
                            }
                            return "Hello!";
                        }
                    });
                    JSValue returnValue = browser.executeJavaScriptAndReturnValue(
                            "MyFunction('Hello JxBrowser!', 1, 2, 3, true);");
                    System.out.println("return value = " + returnValue);
                }
            }
        });
        browser.loadURL("about:blank");
    }
}

Ответ 2

Это не реально. Богатые клиенты на Java выполняются с использованием Swing или SWT.

Если вы хотите использовать HTML/CSS для своего пользовательского интерфейса, вам нужно использовать модель сервера/клиента. Это может быть так же просто, как создание локального сервера и запуск браузера, который подключается к нему, но он все равно будет той моделью.

Если вам абсолютно необходимо, чтобы HTML/CSS являлся вашим интерфейсом пользовательского интерфейса и не мог перейти на модель сервера/клиента, ваш лучший выбор, вероятно, относится к чему-то вроде Google Native Client, но он использует привязки C/С++ на бэкенд. Я не использовал Native Client, поэтому я не могу лично предоставить гораздо больше информации на этом фронте.

Изменить для добавления:

Один из вариантов заключается в том, чтобы встроить собственный браузер в ваше приложение Swing, используя что-то вроде: http://djproject.sourceforge.net/ns/

Есть несколько чистых визуализаторов Java HTML, однако они, скорее всего, не будут полностью совместимы с HTML5/CSS3, не говоря уже о возможностях Javascript.

См. здесь некоторые из этих опций: Чистый Java-просмотрщик/средство просмотра HTML для использования в области прокрутки

Ответ 4

JavaFX 2.2 предоставил эту функциональность для предоставления компонента пользовательского интерфейса (GUI), который имеет веб-представление и полнофункциональную функцию просмотра.

Подробнее см. Добавление содержимого HTML в приложения JavaFX.