2011-08-24 52 views
17

我想用干净的GUI设计新的Git客户端。如何将HTML和CSS用作Java应用程序GUI?

是否可以使用HTML,CSS和JavaScript的力量在Java应用程序?

我想使用Java + JGit为模型,对Java的控制器和HTML + CSS + JavaScript来的意见。

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

回答

8

可以嵌入网页浏览器组件为显示与HTML5 + CSS + JavaScript的内置GUI你的Java Swing/JavaFX桌面应用程序。您可以在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"); 
    } 
} 
+0

您也可以使用Scala.js将JavaScript编译为scala。 –

+0

你仍然必须将东西从JVMWorld连接到JSWorld –

+0

的确如此。为了使它成为可能,API提供了JavaScript基元类型(JSValue)和对象(JSObject)的包装器。 – Vladimir

6

这不是真的可行。 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错误了。

在这里看到其中的一些选项:Pure Java HTML viewer/renderer for use in a Scrollable pane

+0

是的我想我将不得不使用客户端服务器模型。好处是人们可以使用他们自己的浏览器,并且可以远程管理他们的本地git回购站。 –

0

JavaFX的2.2带来了这个功能,以提供具有web视图和全浏览功能的用户接口组件(GUI)。

有关详细信息,请参阅 Adding HTML Content to JavaFX Applications

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17979498) – Tschallacka

相关问题