我想用干净的GUI设计新的Git客户端。如何将HTML和CSS用作Java应用程序GUI?
是否可以使用HTML,CSS和JavaScript的力量在Java应用程序?
我想使用Java + JGit为模型,对Java的控制器和HTML + CSS + JavaScript来的意见。
我不想要客户端 - 服务器模型。我想很好地集成Java和HTML。 DOM事件会直接将事件触发到Java控制器。这样就可以创建丰富的离线应用程序。
我想用干净的GUI设计新的Git客户端。如何将HTML和CSS用作Java应用程序GUI?
是否可以使用HTML,CSS和JavaScript的力量在Java应用程序?
我想使用Java + JGit为模型,对Java的控制器和HTML + CSS + JavaScript来的意见。
我不想要客户端 - 服务器模型。我想很好地集成Java和HTML。 DOM事件会直接将事件触发到Java控制器。这样就可以创建丰富的离线应用程序。
可以嵌入网页浏览器组件为显示与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");
}
}
这不是真的可行。 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
是的我想我将不得不使用客户端服务器模型。好处是人们可以使用他们自己的浏览器,并且可以远程管理他们的本地git回购站。 –
像@Reverand奇闻趣事说,你将需要某种形式的服务器/客户端的。但你可以很容易地embed a Jetty server into a Java app and then use GWT for your client code。
这是非常热门的东西 –
用户如何访问UI?通过网络浏览器? – Halil
JavaFX的2.2带来了这个功能,以提供具有web视图和全浏览功能的用户接口组件(GUI)。
有关详细信息,请参阅 Adding HTML Content to JavaFX Applications。
虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17979498) – Tschallacka
可以使用JFXPanel嵌入的JavaFX的WebView带来HTML,CSS,JavaScript的功率到您的Swing应用程序。看看这个链接中的SimpleSwingBrowser演示:https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm
WebView允许从Java调用JavaScript函数,反之亦然。这也是使用Web技术来增强传统Java应用程序的一个好方法。
您也可以使用Scala.js将JavaScript编译为scala。 –
你仍然必须将东西从JVMWorld连接到JSWorld –
的确如此。为了使它成为可能,API提供了JavaScript基元类型(JSValue)和对象(JSObject)的包装器。 – Vladimir