2011-08-24 10 views
17

Chcę zaprojektować nowego klienta Git z czystym GUI.Jak używać HTML i CSS jako GUI aplikacji Java?

Czy można używać mocy HTML, CSS i JavaScript w aplikacji java?

Chciałbym użyć Java + JGit dla modeli, Java dla kontrolerów i HTML + CSS + JavaScript dla widoków.

Nie chcę modelu klient-serwer. Chciałbym ładnie zintegrować Javę i HTML. Zdarzenie DOM wywoła zdarzenia bezpośrednio w kontrolerze Java. W ten sposób można stworzyć bogatą aplikację offline.

Odpowiedz

8

Możesz dodać komponent przeglądarki internetowej do swojej aplikacji Java Swing/JavaFX Desktop wyświetlającej graficzny interfejs użytkownika zbudowany z HTML5 + CSS + JavaScript. Możesz zobaczyć artykuł opisujący, jak to zrobić w http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

Jedną z bibliotek Java Swing/JavaFX, która umożliwia osadzanie Chromium w aplikacjach Java jest JxBrowser. Używając JxBrowser API możesz załadować dowolną stronę internetową i pracować z jej DOM i JavaScript. Możesz nawet wywoływać metody Java z kodu JavaScript i na odwrót. Np

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

Możesz także użyć Scala.js do kompilacji scala do javascript. –

+0

Nadal musisz łączyć rzeczy z JVMWorld z JSWorld –

+0

To prawda. Aby było to możliwe, API zapewnia wrappery dla typów pierwotnych JavaScript (JSValue) i obiektów (JSObject). – Vladimir

6

To naprawdę niewykonalne. Bogatych klientów w Javie są wykonywane za pomocą Swing lub SWT.

Jeśli chcesz używać HTML/CSS do interfejsu użytkownika, musisz użyć modelu serwer/klient. Może to być tak proste, jak utworzenie lokalnego serwera i uruchomienie przeglądarki, która łączy się z nim, ale nadal będzie to model.

Jeśli bezwzględnie potrzebujesz HTML/CSS jako struktury interfejsu użytkownika i nie możesz przejść do modelu serwer/klient, najlepiej jest patrzeć na coś takiego jak Google Native Client, ale używa on powiązań C/C++ na backend. Nie korzystałem z klienta natywnego, więc nie mogę osobiście podać znacznie więcej informacji na ten temat.

Edycja dodać:

Jedną z opcji jest osadzenie natywną przeglądarkę do aplikacji Swing użyciu coś jak: http://djproject.sourceforge.net/ns/

Istnieje kilka czystych renderers Java HTML, jednak najprawdopodobniej wygrał” t być w pełni zgodne z HTML5/CSS3, nie mówiąc już o możliwych błędach JavaScript.

Patrz tutaj niektóre z tych opcji: Pure Java HTML viewer/renderer for use in a Scrollable pane

+0

Tak, myślę, że będę musiał użyć modelu klient-serwer. Zaletą jest to, że ludzie mogą korzystać z własnej przeglądarki i mogą zdalnie zarządzać swoimi repozytoriami git lokalnych. –

0

JavaFX 2.2 przedstawia tę funkcjonalność do zapewnienia elementu interfejsu użytkownika (GUI), który ma widok internetowy i pełnej funkcjonalności przeglądania.

Aby uzyskać więcej informacji, zobacz Adding HTML Content to JavaFX Applications.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/17979498) – Tschallacka

Powiązane problemy