आपका View
कोड (आपका कस्टम JPanel
) में Controller
फ़ील्ड (या अपने नियंत्रक वर्ग प्राप्त करने का कोई अन्य तरीका) होना चाहिए। इस तरह जब आप उपयोगकर्ता से कोई कार्रवाई प्राप्त करते हैं - उदा। माउस एक बटन पर क्लिक करता है - आप controller.doTheAppropriateAction()
पर कॉल कर सकते हैं। या तो निर्माण में Controller
पास करें, या उस पर एक जावबीन सेटर पैटर्न का उपयोग करें, और इसे अपने स्टार्ट-अप तर्क में निर्माण के बाद सेट करें (जो आपकी "जीयूआई कक्षा" जैसा लगता है)। मैं जावबीन पैटर्न पसंद करता हूं, क्योंकि जीयूआई संपादकों को कोई पैरामीटर कन्स्ट्रक्टर की आवश्यकता नहीं होती है।
आप अपने View
Listener
एक के रूप में के लिए प्रासंगिक Controller
(या Model
) वर्ग रजिस्टर चाहिए, ताकि आप स्वचालित रूप से जब कुछ भी परिवर्तन बताया जाएगा - तो आप अपने Component
रों repaint()
(या कुछ और अधिक उन्नत है) कर सकते हैं। इसमें interface
(लागू करने के लिए View
के लिए) और Controller
(या Model
) में श्रोता हैंडलिंग तर्क स्थापित करने में शामिल होगा।
Lombok PG बाद वाले बॉयलरप्लेट को ले जाता है।
akf
एक विकल्प देता है: Controller
को अपने View
कोड पर ActionListener
के रूप में पंजीकृत करें। उस दृष्टिकोण का लाभ यह है कि आपका View
कोड एक विशिष्ट Controller
से बंधे नहीं होगा - लेकिन नुकसान यह है कि आपका Controller
आपके View
कोड से जुड़ा होगा। मैं विभिन्न यूआई कार्यान्वयन (उदाहरण के लिए स्विंग, जीडब्ल्यूटी, जेएसपी) के लिए Controller
कोड का पुन: उपयोग करता हूं, इसलिए मेरा Controller
एस और Model
एस किसी विशेष View
या परमाणु उपयोगकर्ता कार्रवाई पर कभी भी निर्भर नहीं हैं।
+1 एक महान स्पष्टीकरण के लिए +1 – MadProgrammer