2012-05-04 9 views
11

मैंने कई कई जीयूआई बनाया है और मैं पुस्तकालयों पर निर्भरता नहीं लेना चाहता हूं इसलिए मैं मूलभूत बातें स्वयं कर रहा हूं। एक बात जो मैं बार-बार कर रही हूं वह जीयूआई घटकों के लिए प्राइमेटिव मैपिंग कर रही है।प्राइमेटिव्स और एरे/प्राइमेटिव्स के संग्रह को संभालने के लिए जीयूआई लाइब्रेरी

उदाहरण के लिए

अगर यह एक boolean मैं अक्सर दो विकल्प ("true", "false") के साथ JCombobox का उपयोग है और अगर यह int है मैं एक JTextField का उपयोग करें।

  • int या Integer =>JTextField या JSpinner
  • boolean =>JTextField, JComboBox या JCheckBox
  • : अधिकतर कार्य से और पाठ पर जाने के लिए ...

    कुछ उदाहरण मैपिंग है int[] =>JList ("जोड़ें" फ़ील्ड और "निकालें" बटन के साथ)

  • Set<Byte> = सरणियों

तो, सवाल के रूप में ही> शायद:

  • वहाँ पहले से ही एक पुस्तकालय इस तरह मैपिंग है या मैं इसे फिर से "आविष्कार" करने की जरूरत है कि है?
  • मैंने jfg देखा है जो रिएक्शन और एसडब्ल्यूटी को फ्रंटेंड के रूप में उपयोग करता है (आप स्विंग का उपयोग करके एक नया फ्रंटएंड लागू कर सकते हैं लेकिन यह वही है जो मैं टालने की कोशिश कर रहा हूं)। क्या एक सिमुलर लाइब्रेरी है जो स्विंग और रीएक्शन का उपयोग करती है?
+1

अच्छा सवाल है, +1 – mKorbel

+2

अनुमान बूलियन JCheckBox या JToggleButton को मैप किया जाना चाहिए। लेकिन प्रश्न अच्छे हैं – StanislavL

+2

यह मुझे याद दिलाता है कि कैसे 'JTable' rendersrs और संपादकों को चुनता है। –

उत्तर

2

2 बाध्यकारी पुस्तकालयों मैं के साथ कुछ अनुभव प्राप्त हुआ है इस प्रकार हैं:

  1. glazed lists - इस पुस्तकालय पूरी तरह से चमकता है जब आप एक JTable (एक प्रति पंक्ति आइटम के लिए एक संग्रह मैप करना चाहते हैं, स्तंभ हैं गुण वस्तु का)।
  2. jgoodies binding - गुई तत्वों के लिए बीन गुणों को मैप करने के लिए एक और सामान्य उद्देश्य लाइब्रेरी। यह थोड़ा और जटिल और लेने के लिए मुश्किल है।

और क्यों primitives? मैं मानता हूं कि आप अपने मॉडल को स्टोर करते हैं (गुई द्वारा प्रदर्शित/संपादित किए जा रहे सभी मूल्यों का सेट) एक या अधिक ऑब्जेक्ट्स नंबर में? यदि हां, तो आप ऑटोबॉक्सिंग पर भरोसा कर सकते हैं और गुई में ऑब्जेक्ट रैपर के साथ काम कर सकते हैं।

1

किसी को जावाएफएक्स का उल्लेख करना चाहिए, जो अभी भी मेरी बीयर नहीं है।

0

आपको seesaw पर एक नज़र डालने में दिलचस्प लगेगा जो स्विंग पर आधारित क्लोजर के लिए एक जीयूआई लाइब्रेरी है।

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

; Bind a the value of a slider to an atom, with a transform 
; that forces the value to [0, 1] 
(let [s (slider :min 0 :max 1) 
     a (atom 0.0)] 
    (bind s (transform/100.0) a)) 
संबंधित मुद्दे