我想用一个干净的GUI设计出新的Git客户端.
在Java应用程序中是否可以使用HTML,CSS和JavaScript的强大功能?
我想使用Java JGit的模型,Java的控制器和HTML CSS JavaScript的视图.
我不想要一个客户端 – 服务器模型.我想很好地整合Java和HTML. DOM事件将直接将事件触发到Java控制器.这样就可以创建丰富的离线应用程序.
解决方法
您可以将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"); } }