2011-08-24 6 views
17

मैं एक स्वच्छ जीयूआई के साथ नए गिट क्लाइंट को डिज़ाइन करना चाहता हूं।जावा एप्लिकेशन जीयूआई के रूप में एचटीएमएल और सीएसएस का उपयोग कैसे करें?

क्या जावा एप्लिकेशन में एचटीएमएल, सीएसएस और जावास्क्रिप्ट की शक्ति का उपयोग करना संभव है?

मैं मॉडलों के लिए जावा + जेजीट, नियंत्रकों के लिए जावा और एचटीएमएल + सीएसएस + जावास्क्रिप्ट के लिए जावास्क्रिप्ट का उपयोग करना चाहता हूं।

मुझे क्लाइंट-सर्वर मॉडल नहीं चाहिए। मैं जावा और एचटीएमएल को अच्छी तरह से एकीकृत करना चाहता हूं। एक डोम घटना सीधे जावा नियंत्रक को घटनाओं को आग लग जाएगी। इस तरह समृद्ध ऑफ़लाइन एप्लिकेशन बनाना संभव होगा।

उत्तर

8

आप अपने जावा स्विंग/जावाएफएक्स डेस्कटॉप एप्लिकेशन में वेब ब्राउज़र घटक एम्बेड कर सकते हैं जो एचटीएमएल 5 + सीएसएस + जावास्क्रिप्ट के साथ निर्मित जीयूआई प्रदर्शित करता है। आप एक आलेख वर्णन करता है कि कैसे http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

जावा स्विंग में से एक में यह करने के लिए देख सकते हैं/JavaFX पुस्तकालयों Java अनुप्रयोगों में क्रोमियम एम्बेड करने की अनुमति देता है कि JxBrowser है। JxBrowser API का उपयोग करके आप किसी भी वेब पेज को लोड कर सकते हैं और अपने डोम और जावास्क्रिप्ट के साथ काम कर सकते हैं। आप जावास्क्रिप्ट कोड से जावा विधियों को भी कॉल कर सकते हैं और इसके विपरीत। उदाहरण के लिए:

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 का भी उपयोग कर सकते हैं। –

+0

आपको अभी भी JVMWorld से JSWorld –

+0

से चीजों को पुल करना है यह सच है। इसे संभव बनाने के लिए जावास्क्रिप्ट जावास्क्रिप्ट आदिम प्रकार (JSValue) और ऑब्जेक्ट्स (JSObject) के लिए रैपर प्रदान करता है। – Vladimir

6

यह वास्तव में व्यवहार्य नहीं है। जावा में रिच क्लाइंट स्विंग या एसडब्ल्यूटी का उपयोग करके किया जाता है।

यदि आप अपने उपयोगकर्ता इंटरफ़ेस के लिए HTML/CSS का उपयोग करना चाहते हैं, तो आपको सर्वर/क्लाइंट मॉडल का उपयोग करने की आवश्यकता है। यह एक स्थानीय सर्वर बनाने और उस ब्राउज़र को लॉन्च करने के समान सरल हो सकता है, लेकिन यह अभी भी वह मॉडल होगा।

यदि आपको अपने यूआई ढांचे के रूप में एचटीएमएल/सीएसएस की आवश्यकता है और सर्वर/क्लाइंट मॉडल पर नहीं जा सकता है, तो आपकी सबसे अच्छी शर्त शायद Google मूल क्लाइंट की तरह कुछ देख रही है, लेकिन यह सी/सी ++ बाइंडिंग का उपयोग करती है बैकएंड मैंने मूल क्लाइंट का उपयोग नहीं किया है, इसलिए मैं उस मोर्चे पर व्यक्तिगत रूप से अधिक जानकारी नहीं दे सकता। जोड़ने के लिए

संपादित करें: http://djproject.sourceforge.net/ns/

कुछ शुद्ध जावा एचटीएमएल दाता हैं, तथापि, वे सबसे अधिक संभावना जीता ':

एक विकल्प अपने स्विंग एप्लिकेशन में एक देशी ब्राउज़र एम्बेड करने के लिए की तरह कुछ का उपयोग कर रहा है पूरी तरह से एचटीएमएल 5/CSS3 अनुपालन नहीं हो, अकेले संभवतः जावास्क्रिप्ट बग भी हो।

उन विकल्पों में से कुछ के लिए यहाँ देखें: Pure Java HTML viewer/renderer for use in a Scrollable pane

+0

हाँ मुझे लगता है कि मुझे क्लाइंट-सर्वर मॉडल का उपयोग करना होगा। इसका फायदा यह है कि लोग अपने ब्राउज़र का उपयोग कर सकते हैं और वे दूरस्थ रूप से अपने स्थानीय गिट रेपो प्रबंधित कर सकते हैं। –

4

तरह @Reverand गोंजो कहते हैं, आप सर्वर/ग्राहक के कुछ फार्म की आवश्यकता होगी। लेकिन आप आसानी से embed a Jetty server into a Java app and then use GWT for your client code कर सकते थे।

+0

यह सुंदर हॉट स्टफ –

+0

उपयोगकर्ता यूआई का उपयोग कैसे करेगा? वेब ब्राउज़र के माध्यम से? – Halil

0

JavaFX 2.2 यूजर इंटरफेस घटक (जीयूआई) वेब दृश्य और पूर्ण ब्राउज़िंग कार्यक्षमता है प्रदान करने के लिए इस कार्यक्षमता लाया।

अधिक जानकारी के लिए, Adding HTML Content to JavaFX Applications देखें।

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17 9 7 9 4 9 8) – Tschallacka

0

आप JavaFX WebView को एम्बेड करने के लिए JFXPanel का उपयोग करके अपने स्विंग ऐप में एचटीएमएल, सीएसएस, जावास्क्रिप्ट की शक्ति ला सकते हैं। इस लिंक में SimpleSwingBrowser डेमो पर एक नज़र डालें: https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm

वेबव्यू जावा से जावास्क्रिप्ट कार्यों को कॉल करने की अनुमति देता है और इसके विपरीत। वेब तकनीक के साथ अपने विरासत जावा ऐप को बढ़ाने का यह एक अच्छा तरीका भी है।

संबंधित मुद्दे

 संबंधित मुद्दे