Как использовать HTML и CSS в качестве графического интерфейса приложения Java? - PullRequest
19 голосов
/ 24 августа 2011

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

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

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

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

Ответы [ 6 ]

13 голосов
/ 25 февраля 2015

Вы можете встроить компонент веб-браузера в приложение 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");
    }
}
7 голосов
/ 24 августа 2011

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

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

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

Изменить, чтобы добавить:

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

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

См. Здесь некоторые из этих параметров: Средство просмотра / рендеринга Pure Java HTML для использования в области прокрутки

4 голосов
/ 24 августа 2011

Как говорит @Reverand Gonzo, вам понадобится сервер или клиент. Но вы можете легко встроить сервер Jetty в приложение Java и затем использовать GWT для своего клиентского кода .

0 голосов
/ 08 января 2019

Используйте Angular.js с HTML и остальными, как в Java, просто используйте классы для бизнес-логики, не нужно писать код для awt / swing.Angular with spring boot - это быстрая разработка на Java для веб-приложения с меньшим количеством кода на Java без использования свинга для создания лучшего веб-приложения.

0 голосов
/ 07 марта 2018

Вы можете использовать возможности HTML, CSS, JavaScript в своем приложении Swing, используя JFXPanel для встраивания JavaFX WebView. Посмотрите демонстрацию SimpleSwingBrowser по этой ссылке: https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm

WebView позволяет вызывать функции JavaScript из Java и наоборот. Это также хороший способ усовершенствовать ваше устаревшее Java-приложение с помощью веб-технологий.

0 голосов
/ 17 ноября 2017

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...