2012-04-09 9 views
5

मेरे पास कुछ सत्यापन है जो उपयोगकर्ता टैब पर क्लिक करते समय करता हूं। यदि सत्यापन == सत्य है तो टैब को दिखाने के लिए अनुमति दें (या स्विच करने के लिए)। अभी मैं सत्यापित करने के लिए स्टेट चेंज किए गए कार्यक्रम का उपयोग कर रहा हूं। समस्या यह है कि, जब आप किसी टैब पर क्लिक करते हैं तो यह टैब सामग्री दिखाता है और यदि सत्यापन == झूठी है तो यह पिछले टैब पर वापस स्विच हो जाता है। मैं नहीं चाहता कि यह तब तक स्विच करे जब तक सत्यापन == सत्य न हो। मैं यह कैसे कर सकता हूं, क्या मैं गलत घटना की जांच कर रहा हूं? धन्यवाद सभीजावा JTabbedPane टैब को केवल तभी स्विच करने की अनुमति देता है जब सही

+4

ऐसा करने के लिए आदर्श यूआई/यूएक्स तरीका 'pane.setEnabledAt (अनुक्रमणिका, झूठी)' का उपयोग करके प्रश्न में टैब को "अक्षम" करना होगा, 'राज्य परिवर्तन' घटना में घुलनशील तर्क के बजाय कॉल करें। –

+3

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

उत्तर

1

JTabbedPane.setSelectedIndex (int अनुक्रमणिका) को ओवरराइड करने का प्रयास करें।

+0

क्लीनर समाधान 'DefaultSingleSelectionModel.setSelectedIndex (अनुक्रमणिका)' को ओवरराइड करना और JTabbedPane के लिए मॉडल का उपयोग करना हो सकता है। फिर भी क्लीनर समाधान 'VetoableChangeListener' का समर्थन करने के लिए 'डिफ़ॉल्ट सिंगले चयन मॉडल' को ओवरराइड करना होगा। – xmedeko

+0

पूरी तरह से सहमत हैं: xmedeki समाधान सुरक्षित है। – Zecas

3

सत्यापन = गलत, और tab.setEnabledAt (अनुक्रमणिका, सत्य) को वैधता = सत्य पर वापस चालू करने के लिए आप टैब को अक्षम करने के लिए विधि tab.setEnabledAt (अनुक्रमणिका, झूठी) का उपयोग कर सकते हैं।

संपादित करें: एक टैब को अक्षम करने से इसे भूरे रंग में डाल दिया जाएगा ताकि उपयोगकर्ता इसे पहले स्थान पर क्लिक न कर सके, जिसका अर्थ है कि उपयोगकर्ता टैब पर क्लिक करने से पहले सत्यापन जांच करने जा रहे हैं।

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