きれいな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-
Java Swing/JavaFXライブラリの1つで、ChromiumをJavaアプリケーションは JxBrowser に埋め込むことができます。JxBrowserAPIを使用すると、 Webページを作成し、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を使用していませんので、そのことについて個人的にこれ以上の情報を提供することはできません。
追加して編集:
1つのオプションは、次のようなものを使用してネイティブブラウザーをSwingアプリに埋め込むことです http://djproject.sourceforge.net/ns/
純粋なJava HTMLレンダラーがいくつかありますが、それらはおそらくHTML5/CSS3に完全には準拠していません。もちろん、JavaScriptのバグもある可能性があります。
これらのオプションの一部については、ここを参照してください。 Pure Java Scrollableペインで使用するHTMLビューア/レンダラー
@Reverand Gonzoが言うように、何らかの形のサーバー/クライアントが必要になります。しかし、簡単に JettyサーバーをJavaアプリに組み込み、クライアントコードにGWTを使用する を埋め込むことができます。
Angular.jsをHTMLで使用し、残りはJavaと同じようにします。ビジネスロジックにはクラスを使用するだけで、awt/swingのコードを記述する必要はありません。 Angularスプリングブートを使用すると、Javaコードが少ないWebアプリケーションの場合Java Swingを使用せずに最適なWebアプリケーションを作成できます) 。
JavaFX 2.2は、この機能をWebビューと完全なブラウジング機能を備えたユーザーインターフェイスコンポーネント(GUI)に提供しました。
詳細については、 JavaFXアプリケーションへのHTMLコンテンツの追加 を参照してください。
JavaFX WebViewを埋め込むために JFXPanel を使用して、HTML、CSS、JavaScriptのパワーをSwingアプリに取り込むことができます。このリンクのSimpleSwingBrowserデモをご覧ください: https://docs.Oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm
WebViewでは、JavaScript関数をJavaから、またはその逆に呼び出すことができます。これは、レガシーJavaアプリをWebテクノロジーで強化するための素晴らしい方法でもあります。