如何使用HTML和CSS作为Java应用程序GUI?

Gui*_*ssé 19 html javascript css java user-interface

我想用干净的GUI设计新的Git客户端.

是否可以在Java应用程序中使用HTML,CSS和JavaScript的强大功能?

我想将Java + JGit用于模型,Java用于控制器,HTML + CSS + JavaScript用于视图.

我不想要客户端 - 服务器模型.我想很好地集成Java和HTML.DOM事件会直接将事件触发到Java控制器.这样就可以创建丰富的离线应用程序.

Vla*_*mir 13

您可以将Web浏览器组件嵌入到Java Swing/JavaFX Desktop应用程序中,该应用程序显示使用HTML5 + CSS + JavaScript构建的GUI.您可以在http://java.dzone.com/articles/htmlcssjavascript-gui-java-0上看到一篇介绍如何执行此操作的文章.

允许将Chromium嵌入Java应用程序的Java Swing/JavaFX库之一是JxBrowser.使用JxBrowser API,您可以加载任何网页并使用其DOM和JavaScript.您甚至可以从JavaScript代码调用Java方法,反之亦然.例如:

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 添加jxbrowser不是FOSS,并要求单个开发者许可证1,799美元.这可能会让一些人无所适从. (3认同)

Rev*_*nzo 7

这不太可行.Java中的富客户端使用Swing或SWT完成.

如果要将HTML/CSS用于用户界面,则需要使用服务器/客户端模型.它可以像创建本地服务器和启动连接到它的浏览器一样简单,但它仍然是该模型.

如果您绝对需要将HTML/CSS作为UI框架并且无法转到服务器/客户端模型,那么最好的选择可能是查看Google Native Client,但在后端使用C/C++绑定.我没有使用过Native Client,所以我个人无法在这方面提供更多信息.

编辑添加:

一种选择是使用以下内容将本机浏览器嵌入到Swing应用程序中:http://djproject.sourceforge.net/ns/

有一些纯Java HTML渲染器,但是,它们很可能不会完全符合HTML5/CSS3,更不用说可能还有Javascript错误.

请参阅此处了解其中一些选项:用于Scrollable窗格的纯Java HTML查看器/渲染器