2011-02-04 11 views
11

मैंने अभी क्लोजर का उपयोग करना शुरू कर दिया है (हालांकि, मैंने जावा का बहुत उपयोग किया है और कार्यात्मक प्रतिमानों के बारे में पता है) और मैं सोच रहा था कि उचित जटिल इंटरफेस के साथ क्लोजर ऐप बनाने का अच्छा विचार था (ड्रैगिंग , छोड़ना, पैनिंग, ज़ूमिंग, ...) स्विंग का उपयोग कर?क्लोजर में जटिल जीयूआई

मैं कल्पना कर सकते हैं सामान्य स्विंग लॉजिक्स (विशेष रूप से OO के विषय में) का एक बहुत एक ही रास्ता या अन्य नजरअंदाज करना पड़ता है ..

मैं मान है कि सभी संभव है, लेकिन एक तरह से यह संभव है कि justifyable?

मेरा मतलब है कि यह एक हथौड़ा के साथ एक स्क्रूड्राइवर के साथ एक नाखून मारने जैसा नहीं होगा?

किसी को भी यहाँ है Clojure साथ जीयूआई के निर्माण में अनुभव है (और निश्चित रूप से: कि के लिए आदर्श उम्मीदवार स्विंग है)

धन्यवाद!

उत्तर

9

मुझे क्लोजर में सभ्य उपयोगकर्ता इंटरफेस बनाने के लिए स्विंग का उपयोग करना अपेक्षाकृत आसान है।

  • कोड लिखें काफी आप जावा में होगा के रूप में, बस Clojure से जावा इंटरॉप का उपयोग कर प्रासंगिक घुमाओ एपीआई कॉल करने के लिए: आप कैसे हालांकि यह करने के लिए के बारे में कुछ विकल्प होते है। This article यह समझाने का एक अच्छा काम करता है कि मैक्रो जादू के साथ-साथ आपके जीवन को आसान बनाने के लिए।
  • स्विंग के लिए क्लोजर जीयूआई रैपर का उपयोग करें, उदा। seesaw या clj-swing। जब भी चर रहा है: मेरी ले कि इन उपकरणों संभावित मदद से आप मुहावरेदार Clojure में वास्तव में कुछ साफ जीयूआई कोड लिखने है
  • Clojure के software transactional memory उपतंत्र के
+0

धन्यवाद, मुझे लगता है कि यह किया जा सकता है, हालांकि जटिलता को जोड़ा जा सकता है (जिसे मैं जावा/स्विंग में संभाल सकता हूं) ऐप बनाने के बाद बाद में एक नोगो हो सकता है? क्या ऐसी चीजें नहीं हैं जिन्हें अनदेखा किया जा सकता है? स्विंग में मैं अपना खुद का एमवीसी बनाना चाहता था (जहां डेटाचेंज ने जीयूआई ट्रिगर किया): मुझे लगता है कि अभी भी संभव है? फिर दिया गया उदाहरण अच्छा और उपयोगी है, लेकिन अभी भी बहुत छोटा है ... – Peter

+0

स्विंग/जावा में वास्तव में कुछ भी नहीं है जिसे आप क्लोजर में नहीं कर सकते - आखिरकार जावा इंटरऑप के माध्यम से किसी भी स्विंग/जावा फ़ंक्शन को कॉल करना संभव है अगर आप की जरूरत है। निश्चित रूप से आपको जटिलता का प्रबंधन करने की आवश्यकता है क्योंकि आपका आवेदन बढ़ता है, लेकिन मैं तर्क दूंगा कि यह जावा/स्विंग (उच्च ऑर्डर फ़ंक्शंस, न्यूनतम बॉयलरप्लेट, मैक्रोज़ इत्यादि) की तुलना में क्लोजर में वास्तव में आसान है। – mikera

+0

आप भी देखना चाहते हैं एक लाइब्रेरी में जिसे मैंने जीयूआई प्रोग्रामिंग की सुविधा के लिए लिखा था: https://github.com/jonasseglare/signe।यह आपको एक ही परमाणु के अंदर एक अपरिवर्तनीय डेटा संरचना के रूप में प्रतिनिधित्व आपके कार्यक्रम की स्थिति को लपेटने देता है। मैं उदाहरण के लिए तीन उदाहरण प्रदान करता हूं कि यह कैसे काम करता है। – Rulle

6

एक बहुत अच्छा विशेषता यह आप चर पर देखता है स्थापित करने के लिए अनुमति देता है बदल गया (कुछ भी), आपका कॉलबैक निष्पादित हो जाता है। यह स्वयं को एक शक्तिशाली प्रकार के जीयूआई प्रोग्रामिंग में उधार देता है जहां जीयूआई स्वचालित रूप से आपके चर के राज्य के आधार पर स्वचालित रूप से अद्यतन होता है।

एक छोटा लेकिन गैर-तुच्छ स्विंग जीयूआई उदाहरण http://www.paullegato.com/blog/swing-clojure-gui-black-scholes/ पर विस्तार से वर्णित है।

1

चूंकि अन्य स्विंग से संबंधित उत्तरों का जिक्र कर रहे हैं, इसलिए मैं आपको एक प्रश्न पूछूंगा: क्या स्विंग एक आवश्यकता है। हालांकि क्लोजर में स्विंग कोड लिखना जावा में अधिक सुखद है, फिर भी यह स्विंग है, इसकी सभी वर्बोजिटी और परेशानियों के साथ, विशेष रूप से हार्ड सेट आवश्यकताओं के साथ जटिल अनुप्रयोग में।

क्या आपने वेब यूआई माना है, जहां क्लोजर अधिक प्राकृतिक फिट बैठता है? या SWT या क्यूटी जंबी, जिसे क्लोजर का उपयोग करके काम करने के लिए भी बनाया जा सकता है।

+1

+1: कोई स्विंग की कोई आवश्यकता नहीं है, इसलिए मैं कहता हूं: (और पाठ्यक्रम: इसके लिए आदर्श उम्मीदवार स्विंग कर रहा है?) बेशक मुझे स्विंग के साथ कुछ अनुभव हुआ है, मैं इसे एक प्लस मानता हूं। – Peter

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