Comment utiliser HTML et CSS comme interface graphique D'application Java?

je veux concevoir un nouveau client Git avec une interface graphique propre.

est-il possible d'utiliser la puissance de HTML, CSS et JavaScript dans une application java?

Je voudrais utiliser Java + JGit pour les modèles, Java pour les contrôleurs et HTML + CSS + JavaScript pour les vues.

je ne veux pas d'un modèle client-serveur. J'aimerais bien intégrer Java et HTML. Un événement DOM déclencherait des événements directement vers un contrôleur Java. De cette façon, il serait possible de créer riche hors ligne application.

18
demandé sur Shadow Wizard 2011-08-24 18:17:47

5 réponses

Vous pouvez intégrer le composant de navigateur Web dans votre application Java Swing/JavaFX Desktop qui affiche L'interface graphique construite avec HTML5+CSS+JavaScript. Vous pouvez voir un article qui décrit comment procéder à http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

L'une des bibliothèques Java Swing/JavaFX qui permet l'intégration du chrome dans les applications Java est JxBrowser. En utilisant L'API JxBrowser vous pouvez charger n'importe quelle page web et travailler avec son DOM et JavaScript. Vous pouvez même appeler les méthodes Java à partir du code JavaScript et vice versa. Par exemple:

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");
    }
}
12
répondu Vladimir 2016-08-01 12:20:17

Ce n'est pas vraiment possible. Les clients riches en Java utilisent Swing ou SWT.

si vous voulez utiliser HTML/CSS pour votre interface utilisateur, vous devez utiliser le modèle serveur/client. Il peut être aussi simple que de créer un serveur local et de lancer un navigateur qui se connecte à lui, mais ce serait encore Ce modèle.

si vous avez absolument besoin D'avoir HTML / CSS comme cadre D'interface utilisateur et ne pouvez pas aller à un modèle Serveur / client, votre meilleure chance est probablement de regarder quelque chose comme Google Client natif, mais qui utilise des liaisons C/C++ sur le backend. Je n'ai pas utilisé de Client natif donc je ne peux pas personnellement donner beaucoup plus d'informations sur ce front.

Modifier pour ajouter:

une option est d'intégrer un navigateur natif dans votre application Swing en utilisant quelque chose comme:http://djproject.sourceforge.net/ns/

il y a quelques rendus purs Java HTML, cependant, ils ne seront probablement pas entièrement compatibles HTML5/CSS3, et encore moins peut-être ont Les bogues Javascript aussi.

Voir ici pour certaines de ces options: Java Pur visionneuse HTML/moteur de rendu pour une utilisation dans un volet de Défilement

6
répondu Reverend Gonzo 2017-05-23 12:10:30

comme le dit @Reverand Gonzo, vous aurez besoin d'une certaine forme de serveur/client. Mais vous pourriez facilement intégrer un serveur Jetty dans une application Java et ensuite utiliser GWT pour votre code client.

4
répondu tinyd 2011-08-24 14:37:25

JavaFX 2.2 a amené cette fonctionnalité à fournir un composant d'interface utilisateur (GUI) qui a une vue sur le web et une fonctionnalité de navigation complète.

Pour plus de détails, voir ajouter du contenu HTML aux Applications JavaFX.

0
répondu Sandeep Singh 2017-11-17 11:30:50

vous pouvez introduire la puissance de HTML, CSS, JavaScript dans votre application Swing en utilisant JFXPanel pour intégrer JavaFX WebView. Regardez la démo de SimpleSwingBrowser link:https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm

WebView permet d'appeler des fonctions JavaScript depuis Java et vice versa. C'est aussi une bonne façon d'améliorer votre application Java legacy avec les technologies web.

0
répondu johnk 2018-03-07 15:35:46