जावा प्रोग्राम को 'देशी दिखाई' देना कठिन क्यों है?


98

अधिकांश Java अनुप्रयोग C / C ++ अनुप्रयोगों के समान नहीं दिखते हैं। स्विंगिंग को इस उद्देश्य से डिज़ाइन किया गया होगा कि एक विशिष्ट रूप दिया जा सके, लेकिन मैंने जो पढ़ा है, उसके आधार पर, उदाहरण के लिए SWT ने 'मूल' देखने की कोशिश की, और पूरी तरह से सफल नहीं हुआ।

मेरा सवाल यह है कि:

जावा भाषा के डेवलपर्स के लिए एक GUI सिस्टम डिज़ाइन करना कठिन है जो मूल GUI के लुक को कॉपी करता है ? देशी GUIs में क्या अलग है? क्या यह केवल 'देशी' बटन की तरह दिखने वाले बटन को डिजाइन करने की बात नहीं है? या इससे ज्यादा गहरा होता है?


31
क्योंकि स्विंग अपने स्वयं के गुई घटकों को लिखते हैं जो पोर्टेबिलिटी के विचार में, वास्तविक देशी घटकों के लिए एक बंधन बनाने के बजाय, देशी की नकल करने की कोशिश करते हैं
शाफ़्ट सनकी 11

5
मैं इस विषय का विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि यह केवल एक बात है कि जीयूआई टूलकिट विक्रेता कितना प्रयास करते हैं कि वे सभी Gory विवरण सही हो। उदाहरण के लिए, C ++ फ्रेमवर्क "Qt" और इस SO प्रश्न को देखें: stackoverflow.com/questions/7298441/…
Doc Brown

4
देखभाल करने के लिए कई विवरण हैं। उदाहरण के लिए जिस तरह से एक फ़ाइल खुले संवाद में ऑटो-पूर्ति काम करती है वह एक बिंदु है जहां एक देशी दिखने वाला जावा एप्लिकेशन टूट गया।
कोडइन्कॉउंस

4
स्विंग में एक "देशी लुकलाइक" लुक-एंड-फील है जिसे आप डिफ़ॉल्ट के बजाय प्लग कर सकते हैं। इसके अलावा, जावा ने पहले AWT के साथ उपलब्ध देशी सामान का उपयोग करने की कोशिश की, लेकिन प्लेटफार्मों के बीच अंतर्निहित मतभेदों के कारण यह बहुत अच्छी तरह से काम नहीं कर रहा था। यही कारण है कि उन्होंने स्विंग बनाया, ताकि एक जावा ऐप हर जगह बिल्कुल समान काम करे।
12

5
JavaFX की अनदेखी न करें। यह SWING प्रतिस्थापन है और जावा 8 के साथ डिफ़ॉल्ट रूप से JDK / JRE में है। यह SWING और AWT की तुलना में बहुत अधिक आधुनिक है और बस सभी प्लेटफार्मों के बारे में बहुत अधिक देशी दिखता है (यह प्रत्येक में देशी UI टूलकिट में बहुत अधिक हुक करता है। मंच)। उस के साथ, जैसा कि दूसरों ने उल्लेख किया है, जावा की तरह "एक-आकार-फिट-सभी" भाषा से बिल्कुल देशी दिखने वाला आवेदन प्राप्त करने के लिए, आपको कुछ काम करना होगा। जावा का UI / / अभी भी-आउट-ऑफ-द-बॉक्स के लिए "सभी प्लेटफार्मों के लिए सबसे अच्छा फिट" होने का इरादा है।
स्नेकडॉक

जवाबों:


56

क्या यह केवल 'देशी' बटन की तरह दिखने वाले बटन को डिजाइन करने की बात नहीं है?

बटन के लिए अच्छी तरह से। लेकिन यह आप की कल्पना से भी कठिन हो सकता है। इन दिनों GUI घटकों का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले ग्राफिक्स यादृच्छिक बिटमैप्स के रूप में सरल नहीं हैं, क्योंकि ये (इनमें से बहुत अच्छी तरह से पैमाने नहीं हैं) - वे अक्सर वेक्टर आधारित ग्राफिक्स होते हैं जिनमें बहुत सारे कोने वाले प्रोग्राम होते हैं ( इसलिए जब बटन स्क्रीन के किनारे तक पहुंचता है तो यह उदाहरण के लिए थोड़ा अलग हो सकता है।) और निश्चित रूप से, बटन क्लिक करने पर आपको अलग ग्राफिक्स की आवश्यकता होगी। कॉपीराइट कारणों से, डेवलपर्स अक्सर इन मौजूदा ग्राफिक्स का एकमुश्त उपयोग नहीं कर सकते हैं, इसलिए उन्हें फिर से बनाना होगा - और जब वे अधिकांश भाग के लिए एक अच्छा काम करते हैं, तो अनिवार्य रूप से कुछ चीजें छूट जाती हैं, जिससे ग्राफिकल घटकों की विशाल सरणी मिलती है।

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


1
धन्यवाद। 'लाइट-वेट' का वास्तव में क्या मतलब है? और 'देशी' का वास्तव में क्या मतलब है? मुझे लगता है कि इसका मतलब कुछ ऐसा है जो कंप्यूटर के ओएस से संसाधनों का उपयोग करता है या इसके साथ सीधे संपर्क करता है। क्या ये सच है?
user3150201

1
@ user3150201 ज़रूर, इसलिए अंतर्निहित OS में एक निश्चित मात्रा में बटन और विजेट होंगे, जिन्हें मूल रूप से रखा जा सकता है, लेकिन जाहिर है कि ये बटन OS और प्लेटफार्मों के बीच भिन्न होंगे - ये हैवीवेट, देशी घटक हैं। लाइटवेट घटक ओएस द्वारा तय किए गए घटक नहीं हैं, वे GUI घटकों की तरह देखने और व्यवहार करने के लिए जावा (इस मामले में) द्वारा तैयार किए गए हैं - इसलिए वे देख सकते हैं कि क्या आप काम करना चाहते हैं (लेकिन आपको अनुकरण करना होगा मंच देखो और महसूस करो कि अगर तुम चाहते हो, तो तुम इसे मुफ्त में नहीं
पाओगे

14
बटन, सटीक आकार, और पसंदीदा GUI शैलियों का स्थान प्लेटफ़ॉर्म से भिन्न होता है और उन्हें काम में लेने के लिए जावा की नकल होती है। स्विंग आपको दे सकता है देशी बटन लेकिन अगर यह 10 पिक्सेल लंबा है तो उपयोगकर्ता को अभी भी लगता है कि कुछ बंद होगा। Apple के पास मानव इंटरफ़ेस दिशानिर्देश हैं और Microsoft के पास उपयोगकर्ता इंटरफ़ेस दिशानिर्देश हैं जो आपको सही देशी लुक पाने में मदद करते हैं। प्लेटफार्मों के बीच आपको कुछ हद तक यूआई को बदलना होगा।
माइकल शोपिन

4
JavaFX SWING और AWT की तुलना में बहुत अधिक "देशी" दिखाई देता है। इसमें देशी पारदर्शी खिड़कियां हैं, आदि बहुत अधिक आधुनिक हैं।
स्नेकडॉक

2
@SnakeDoc यह अधिक आधुनिक, निश्चित रूप से प्रतीत होता है, लेकिन मैं यह नहीं कहूंगा कि यह "देशी" प्रतीत होता है - यह निश्चित रूप से मंच के अंतर्निहित जीयूआई घटकों का उपयोग नहीं करता है, यह सभी सीएसएस में चमड़ी है।
berry120

71

शाब्दिक रूप से आधा दर्जन टूलकिट हैं जिन्हें किसी प्रणाली पर "देशी" माना जा सकता है। इनमें से कुछ की अद्वितीय अवधारणाएँ या क्षमताएं हैं, और एक क्रॉस-प्लेटफ़ॉर्म टूलकिट में उनकी नकल करना थकाऊ है। किसी एप्लिकेशन का लुक और अहसास न केवल "स्किन" से निर्धारित होता है, बल्कि लेआउट पर भी होता है और यह कैसे व्यवहार करता है। कुछ विचार:

  • एक संवाद में, "ओके" बटन किस तरफ होता है - बाईं ओर या दाईं ओर? पर्याप्त रूप से, प्रत्येक सिस्टम के लिए एक अलग संवाद बनाएँ।
  • हम स्क्रीन पर डिफ़ॉल्ट बटन को कैसे चिह्नित करते हैं? रंग टिनिंग, बोल्ड फ़ॉन्ट, बटन बढ़ाना? काफी उचित, चलो एक स्टाइलशीट में डाल दिया।
  • विंडोज पर, "रिबन" अवधारणा बल्कि मूल है। यह मैक के लिए कैसे अनुवादित होगा, जहां रिबन आम नहीं है? पर्याप्त रूप से, चलो पिक्सेल-सटीक लेआउट को भूल जाते हैं और प्रत्येक सिस्टम के लिए एक अलग टूलबार कार्यान्वयन प्रदान करते हैं।
  • क्या मेन्यू बार विंडो का हिस्सा है (विंडोज़, वैकल्पिक रूप से केडीई), या क्या यह स्क्रीन के शीर्ष पर (मैक, यूनाईटेड) बैठता है? पर्याप्त रूप से, चलो प्रत्येक सिस्टम के लिए एक अलग कार्यान्वयन लिखते हैं, जैसा कि हमने पहले ही पिक्सेल-सटीक लेआउट को फेंक दिया है
  • फोंट का प्रतिपादन कैसे किया जाता है? के रूप में संभव के रूप में कुरकुरा, या चिकनी और antialiased? और किस फ़ॉन्ट का उपयोग किया जाना चाहिए? ध्यान दें कि अलग-अलग फॉन्ट में अलग-अलग मेट्रिक्स होते हैं, इसलिए समान पैराग्राफ़ में दिए गए पैराग्राफ़ में फॉन्ट के आधार पर अलग-अलग संख्याएँ हो सकती हैं।
  • क्या खिड़की की पृष्ठभूमि एक ही रंग, एक छवि या एक ढाल है? चलो बस एक स्टाइलशीट में डाल दिया।
  • स्क्रॉलबार कैसे दिखते हैं? बटन कहां हैं - यदि उनके पास कोई है? वे कितने विस्तृत हैं, या वे केवल तभी प्रकट होते हैं जब सूचक एक निश्चित क्षेत्र में चला जाता है?
  • हम अन्य रंग योजनाओं को कैसे शामिल करते हैं?
  • क्या ड्रैग करने योग्य होने की उम्मीद है? संदर्भ मेनू कहाँ अपेक्षित हैं?

जब वे अनुप्रयोग के व्यवहार या सामान्य लेआउट पर स्पर्श करते हैं, तो इन समस्याओं को एक साधारण स्टाइलशीट के माध्यम से हल नहीं किया जा सकता है। एकमात्र वास्तविक समाधान प्रत्येक प्रणाली के लिए आवेदन को फिर से लिखना है (इस प्रकार जावा के क्रॉस-प्लेटफॉर्म लाभों को अनदेखा करना)। एकमात्र वास्तविक समाधान पिक्सेल-सटीक लेआउट के बारे में भूलना है, और एक सामान्य इंटरफ़ेस को लिखना है जो सिस्टम-विशिष्ट टूलकिट्स पर सार करता है। स्विंग द्वारा लिया गया समाधान विभिन्न प्रणालियों का अनुकरण करना है, जो शानदार तरीके से विफल हो जाता है।

और फिर क्रॉस-प्लेटफॉर्म संगति है, यह विचार कि आपका ऐप सभी प्रणालियों पर समान रूप से देख सकता है (अक्सर गेम द्वारा चुना जाता है, जहां यह विसर्जन बढ़ता है)। डेस्कटॉप एप्लिकेशन पर, यह केवल कष्टप्रद है और उपयोगकर्ता की उम्मीदों को तोड़ता है।


1
+1। केवल एक चीज जो मैं जोड़ना चाहता हूं: उन चीजों के बारे में जो सिस्टम उपयोगकर्ता को "सरल" विवरण से शुरू करने की अनुमति देता है जैसे कि संदर्भ मेनू कैसे खोलें? (और मैं विंडोज़ प्रोग्रामों को पसंद करूंगा कि रिबन और मैक ऐप्स आपके पास नहीं हैं, धन्यवाद। हां, अच्छे जीयूआई को प्रति ओएस पर डिज़ाइन करने की आवश्यकता है।)
क्रिस्टोफर क्रुट्ज़िग

@ChristopherCreutzig यह वह जगह है जहां मेरा अनुभव होता है: मेरे मुख्य डेस्कटॉप पर, मैं लिनक्स पर केडीई का उपयोग करता हूं (दोनों स्वयं बहुत विन्यास योग्य हैं), और अनुप्रयोगों के लुक को समायोजित करने के लिए QtCurve का उपयोग करें। ये विशेष स्टाइल फ्लैगशिप केडीई एप्लिकेशन में ठीक काम करते हैं। अच्छी तरह से लिखे गए GTK ऐप्स कम्पैटिबिलिटी लेयर का उपयोग कर सकते हैं, लेकिन बैकग्राउंड ग्रेडिएंट गायब हैं, मेन्यू बार विंडो आदि के अंदर रहता है। लेकिन तब यह जल्दी से बिगड़ने लगता है, सिस्टम स्टाइल के कुछ विजेट्स (जैसे स्क्रॉलबार) से प्रोग्राम लेने लगते हैं। , लेकिन दूसरों की अनदेखी (फ़ॉन्ट रेंडरिंग की तरह, या मेनू के चारों ओर छाया)
आमोन

+1 क्योंकि इस उत्तर में कुछ मजबूत बिंदु हैं, लेकिन कुछ कमजोर बिंदु भी हैं। कोई भी "यह विंडो प्रबंधक कैसे एक्स को आकर्षित करता है" इस मुद्दे को देशी एपीआई का उपयोग करके नियंत्रित किया जाता है। उदाहरण के लिए, ओएस एक्स पर एक्स 11 देशी ओएस एक्स विंडोज, बटन, स्क्रॉल बार, डायलॉग आदि को आकर्षित कर सकता है, इसलिए उनमें से बहुत सारे मुद्दे गायब हो जाते हैं। असली UX है: इस सवाल का जवाब क्या @TheSpooniest नीचे कहा है इतना अधिक सिर्फ ड्राइंग विगेट्स से। रिक्ति, समय, एनीमेशन, माउस त्वरण, स्पर्श आदानों ... एक सूक्ष्म विवरण की दुनिया है जो क्रॉस-प्लेटफ़ॉर्म टूलकिट के साथ पुन: पेश करने के लिए बहुत महंगी है।
मार्क ई। हासे

13

हां, यह गहरा होता है।

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

जब आपके पास संपूर्ण GUI है, तो इसे बहिष्कृत किया जाता है: OS X प्रोग्राम इसकी सामग्री को विंडोज प्रोग्राम की तुलना में अलग तरह से प्रस्तुत करता है। यह एक जीयूआई में कैप्चर करने के लिए असंभव के बगल में है - आपको दो जीयूआई की आवश्यकता होगी, लेकिन बहुत सारे एप्लिकेशन इतना उपद्रव नहीं करते हैं। इसके बजाय वे "अधिकांश प्रणालियों पर ठीक लग रहा है" के लिए लक्ष्य कर रहे हैं - यह अभी भी कुछ हद तक विदेशी दिखता है, लेकिन प्रयोग करने योग्य और विकसित करने के लिए बहुत आसान है।


9

ओएसएक्स बटन, या विंडोज बटन, या किसी अन्य टूलकिट की तरह दिखने वाला बटन बनाना कठिन नहीं है। लेकिन अधिकांश वातावरणों के लिए UI दिशानिर्देश उतने सरल नहीं हैं जितना कि "यह वही है जो एक बटन जैसा दिखता है"। यूआई तत्वों के बीच रिक्ति से लेकर ऑर्डर तक कई उप-अंतर भिन्नताएं हैं, जिसमें कुछ प्रसिद्ध कार्यों को सूची में मेनू सिस्टम में वरीयताएँ / विकल्प संवाद की सटीक स्थिति में दिखाई देना चाहिए। एक बहुत ही सरल उपयोगकर्ता इंटरफेस के लिए सबसे आम मामलों को स्वचालित कर सकता है, लेकिन बहुत से नहीं तो अधिकांश यूआई कार्यों को बहुत बेहतर स्पर्श की आवश्यकता होती है।

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

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


7

आपके आवेदन को हर सिस्टम पर जितना संभव हो सके उतना स्वाभाविक रूप से देखने की अपेक्षा करना और आपके आवेदन को प्रत्येक प्रणाली पर उसी तरह से काम करने की अपेक्षा करना है। कोई "सही" विकल्प नहीं है।

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

यही कारण है कि कुछ जीयूआई टूलकिट डेवलपर्स अपने स्वयं के घटकों को प्रदान करना पसंद करते हैं जो देशी की नकल करते हैं, लेकिन अपने स्वयं के कार्यान्वयन प्रदान करते हैं। दूसरी ओर एक कार्यात्मक पूर्ण जीयूआई टूलकिट विकसित करना एक महत्वपूर्ण प्रयास है और आर्थिक कारणों से कुछ किनारों को काटने का कारण हो सकता है।

ध्यान दें कि यह समस्या जावा विशिष्ट नहीं है, लेकिन प्लेटफ़ॉर्म स्वतंत्र टूलकिट बनाने वाली प्रत्येक कंपनी द्वारा सामना किया जाता है।


चुपचाप नीचा दिखाने के बजाय, आप यह बताकर समुदाय की अधिक से अधिक सेवा करेंगे कि आप एक उत्तर के साथ क्या गलत समझते हैं। जब तक कि यह सिर्फ एक व्यक्तिगत मुद्दा न हो ...
निकोला मुसाती

4

यह सब इतिहास के कारण है।

सूरज ने सभी मशीनों पर समान काम करने के लिए सभी जावा सॉफ्टवेयर की कामना की।

सॉफ्टवेयर के लिए "मूल प्रकट" करने के लिए इसे दिए गए ओएस पर अन्य सॉफ्टवेयर के समान काम करना होगा।

सन ने अपनी शक्ति में सब कुछ किया जो कि जावा सॉफ्टवेयर को लिखना मुश्किल बना देता है जो कि ओएस के साथ एकीकृत होता है, क्योंकि ओएस के साथ किसी भी एकीकरण से सॉफ्टवेयर प्रत्येक ओएस पर अलग तरह से काम करेगा।

इन दिनों बहुत कम जावा प्रोग्रामर वेब सर्वर आधारित सॉफ्टवेयर के अलावा किसी और चीज की परवाह करते हैं।

माइक्रोसॉफ्ट ने जावा पर आधारित सभी प्रोग्रामर्स को Microsoft जावा जावा सिस्टम का उपयोग करके हिला दिया, इसलिए शुरुआती दिनों में जावा को चुनने वाले किसी भी प्रोग्रामर को बुरा लगता है।

डेस्कटॉप सॉफ़्टवेयर लिखने वाला कोई भी व्यक्ति जो "दिखाई दे रहा है" के बारे में परवाह करता है, बहुत समय पहले जावा का उपयोग नहीं करना सीख गया था और हर बार जब वे ओरेकल सॉफ्टवेयर का उपयोग करते हैं तो उनके विचार प्रबलित होते हैं।

इसलिए इन दिनों जावा प्रोग्रामर से डेस्कटॉप सॉफ्टवेयर पर "देशी दिखाई" की कोई मांग नहीं है।


5
"सूर्य ने अपनी शक्ति में सब कुछ किया, जिससे जावा सॉफ्टवेयर लिखना मुश्किल हो गया जो कि ओएस के साथ एकीकृत था," गलत। वे बस इसे आसान बनाने में कोई बड़ा प्रयास नहीं करते हैं। "सन ने जावा को डेस्कटॉप पर सभी प्रोग्रामर को हिलाकर मार दिया जिसने Microsoft जावा आधारित सिस्टम का उपयोग किया" गलत, Microsoft और सूर्य के बीच की आपसी दुश्मनी के कारण Microsoft ने AWT पुस्तकालयों का एक संस्करण बनाया जो सूर्य की आवश्यकताओं के अनुकूल नहीं था, जिससे कुख्यात हुआ सूर्य / एमएस मुकदमे।
9

1
@jwenting, Sun ने Microsoft के लिए समस्याएँ बनाने के बारे में अधिक ध्यान दिया, फिर उन प्रोग्रामर्स के बारे में जिन्होंने Microsoft की जावा आधारित प्रणाली का उपयोग करने के लिए चुना था। इसलिए मैंने जेव पर छोड़ दिया और MFC के साथ C # बाहर आने तक रखा।
इयान

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

3

आपको क्या लगता है nativeकि वास्तव में देशी ऐप्स अपना काम कर रहे हैं, जबकि SWT जैसे टूलकिट उस OS के UI के लिए प्रकाशित मानकों का पालन करते हैं। समस्या यह है कि जब आप जावा ऐप को आग लगाते हैं तो कोई भी उन मानकों का पालन नहीं करता है। यह मूल प्रतीत नहीं होता है। एक उदाहरण के रूप में, Microsoft की लगभग सभी परियोजनाएं (कार्यालय, आउटलुक, आदि) को विंडोज मानक नियंत्रणों का उपयोग करके नेत्रहीन पुन: पेश नहीं किया जा सकता है।

यह और भी बुरा होने वाला है क्योंकि Microsoft और Apple दोनों अपने OS प्लेटफ़ॉर्म में गतिशील UI सुविधाएँ जोड़ते हैं। डेवलपर्स को स्किन / स्टाइल के लिए अपने एप्स की तरह वेब डिजाइनिंग वेबसाइटों के लिए स्टाइल बनाते हैं।

Android प्लेटफॉर्म पर जावा इस पथ का अनुसरण कर रहा है। Android में UI के लिए UI तत्वों को स्किनेबल स्टाइल के साथ बनाना।

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


1
+1, विंडोज 95 के युग में वापस विंडोज नियंत्रण के लिए एक 'मानक' देखो था। अब, इतना नहीं।
ग्रैंडमास्टरबी

हाँ, इसके कुछ साल हो गए हैं जब से मैंने डेस्कटॉप प्रोग्राम किया है, लेकिन मुझे आश्चर्य था कि MS निर्मित उत्पादकता सॉफ़्टवेयर के अभिन्न होने के बावजूद .NET ने रिबन शैली नियंत्रण के साथ जहाज नहीं बनाया।
रिग

@Rig 4.0 के बाद से .NET में एक अच्छा देशी रिबन नियंत्रण है। यहाँ एक अच्छा लेख है: c- sharpcorner.com/UploadFile/0b73e1/ribbon-control-in-wpf-4-5
क्रिश्चियन सॉयर

1
@ रिग आपको .NET 4.5 की आवश्यकता होगी, न कि .NET 4. विज़ुअल स्टूडियो 2010 को केवल 4 तक लक्षित कर सकते हैं; आपको 4.5 लक्ष्य करने के लिए VS2012 या नए की आवश्यकता होगी। मैं इसे वीएस २०१३ में ४.५ को लक्षित करते समय देख सकता हूं, लेकिन तब नहीं जब मैं लक्ष्य संस्करण को ४. में बदल देता हूं
बॉब

1
@ रीग 4.0 में रिबन का उपयोग करना संभव है - आप इसे माइक्रोसॉफ्ट से डाउनलोड कर सकते हैं और फिर यह दिखाई देगा: 10rem.net/blog/2010/10/22/wpf-ribbon-october-release (यदि यह सुनिश्चित नहीं है) नवीनतम संस्करण है)। बेहतर इसे Nuget से डाउनलोड करें। मुझे यह करना था कि एक प्रोग्राम के लिए जिसे विंडोज एक्सपी पर चलना था - ठीक काम करता है और ज्यादातर नेट 4.5 वेरिएंट के साथ संगत है, इसलिए आप 4.0 चीज़ को चीर सकते हैं जब एक्सपी अंत में रिटायर हो जाता है।
क्रिश्चियन सॉयर

-1

आप कौन सा ऑपरेटिंग सिस्टम "मूल" भी देखना चाहते हैं?

आप सिर्फ उन सभी को 100% समय के मूल निवासी नहीं हो सकते

SWT आदि उन सभी के मूल के रूप में देखने के लिए सबसे अच्छा प्रयास दृष्टिकोण है क्योंकि यह तब मिलता है जब आपको कुछ समझौता करने की आवश्यकता होती है

और वास्तव में, यह समझौता अधिक से अधिक कठिन होने लगता है; ऑपरेटिंग सिस्टम के कारण ऐसा नहीं है, लेकिन इनपुट उपकरणों के कारण। टचस्क्रीन के लिए, आपको वास्तव में अलग तरह से डिजाइन करना होगा, क्योंकि कोई सही माउस बटन नहीं है। इसलिए, आपको अन्यथा उसी कार्यक्षमता को समायोजित करने की आवश्यकता है।

एक जादुई बटन कभी भी नहीं होगा जो कार्यक्षमता को "सहज रूप से" सही माउस बटन से अतिथिगृह तक ले जाता है, इसके बिना आप हर एक इनपुट डिवाइस के लिए हर विस्तृत पहलू को निर्दिष्ट करते हैं (जिस बिंदु पर, आप अपने विचार किए गए प्रत्येक प्लेटफॉर्म के मूल निवासी हैं, लेकिन फिर भी गैर -किसी ने भी आप पर विचार नहीं किया है)।


-2

वाकई अच्छा सवाल है। मैं हमेशा अतीत में कुछ बाद के वर्षों के लिए इसके बारे में सोचता था, मैंने सोचा कि इसके पीछे कुछ कानूनी कारण था, लेकिन वास्तव में ऐसा नहीं है।

मुझे लगता है कि उत्तर बल्कि सरल है, और बहुत सारे उत्तर वास्तव में इस मुद्दे पर खुदाई नहीं कर रहे हैं।

यदि आपकी भाषा स्क्रीन पर पाईक्सेल को आकर्षित करने की अनुमति देती है, तो इसके आधार पर एक gui रूपरेखा तैयार करना 100% संभव है जो विंडोज फॉर्म नियंत्रणों की नकल और ठीक महसूस करेगा।

चूँकि जावा क्रोसप्लेट रिकॉर्डर है, इसलिए यह पूरी तरह से संभव है कि वास्तविक रनिंग सिस्टम प्रकार (मैक / विंडोज) के आधार पर यूआई रनटाइम प्लेटफॉर्म शैली से मेल खाते हुए दोनों प्लेटफार्मों पर अलग-अलग दिखे।

जैसा कि आप XAML में देख सकते हैं उदाहरण के लिए यूआई को बहुत ही संरचित रूप और भाषा में आसानी से प्रस्तुत किया जा सकता है। यदि ऐसा करने के लिए समय लिया जाता है, तो "मूल" व्यवहार चुनना भी संभव है।

इसलिए जीयूआई फ्रेमवर्क बनाना संभव होगा जो जावा डेवलपर्स को उन अनुप्रयोगों को प्राप्त करने की अनुमति देगा जो मैक और विंडोज पर मूल दिखेंगे।

तो हम स्विंग के लिए, जीयूआई फ्रेमवर्क के संभावित अनन्तता में से सिर्फ एक जीयूआई फ्रेमवर्क को प्राप्त करते हैं जो कि जावा के लिए बनाया जा सकता है। यह व्यवहार करता है कि यह कैसे प्रोग्राम किया गया था, जो उपरोक्त प्रक्रिया का पालन नहीं करता है और आपको दोनों प्रणालियों पर अजीब तरह से दिखने वाले एप्लिकेशन मिलते हैं। Thats पसंद स्विंग डेवलपर्स द्वारा किए गए, किसी ने उन्हें ऐसा करने और उस तरह का व्यवहार करने के लिए मजबूर नहीं किया।


2
यह इस सवाल का जवाब नहीं देता है, पूछने वाला पहले से ही इस बिंदु को कवर करता है: "स्विंग को एक विशिष्ट रूप देने के उद्देश्य से डिज़ाइन किया गया हो सकता है"
gnat

मैं असहमत हूं, लेकिन आपके ऋण (?) पर टिप्पणी करने के लिए धन्यवाद
वैलेंटाइन कुजब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.