2009-06-30 11 views
5

प्रदर्शित करने से पहले किए गए क्रियाएं जब JTabbedPane में मौजूद पैनलों में से एक क्लिक किया जाता है, तो मुझे शुरुआत में कुछ क्रियाएं करने की आवश्यकता होती है। कहें, उदाहरण के लिए, मुझे उपयोगकर्ता नाम और पासवर्ड जांचना होगा। केवल अगर वे मैच करते हैं, तो विशेष पैनल संचालन करने की आवश्यकता होती है। क्या आप किसी भी तरीके का सुझाव दे सकते हैं?JTabbedPane: चयनित टैब

उत्तर

7

सुनिश्चित नहीं हैं कि मैं पूरी तरह से अपने प्रश्न को समझते हैं, लेकिन मुझे लगता है की तरह कुछ करना होगा:

  • JTabbedPane करने के लिए एक ChangeListener जोड़े पहला टैब क्लिक के लिए सुनने के लिए।
  • जब कोई चेंजवेन्ट एक स्विंगवर्कर का उपयोग करके पृष्ठभूमि थ्रेड पर लॉगिन करता है।
  • यदि लॉगिन सफल है तो ईवेंट प्रेषण धागे पर आवश्यक UI ऑपरेशन करें।

उदाहरण के लिए:

tabbedPane.addChangeListener(new ChangeListener() { 
    private boolean init; 

    public void stateChanged(ChangeEvent e) { 
     if (!init) {           
      init = true; 

      new SwingWorker<Boolean, Void>() { 
       @Override 
       protected void done() { 
        try { 
         boolean loggedIn = get(); 

         if (loggedIn) { 
          // Success so perform tab operations. 
         } 
        } catch (InterruptedException e1) { 
         e1.printStackTrace(); // Handle this. 
        } catch (ExecutionException e1) { 
         e1.printStackTrace(); // Handle this. 
        } 
       } 

       protected Boolean doInBackground() throws Exception { 
        // Perform login on background thread. Return true if successful. 
        return true; 
       } 
      }.execute(); 
     } 
     } 
    }); 
3

टैब बदलने के लिए कार्रवाई यूआई कक्षा में एक माउस श्रोता से शुरू हो रहा है। यह क्लिक करता है और जांच करता है कि क्लिक किए गए समन्वय पर कोई टैब है या नहीं, और यदि ऐसा है, तो टैब सक्षम है या नहीं। यदि वह मानदंड पूरा हो जाता है, तो यह आपके JTabbedPane पर setSelectedIndex(int) पर कॉल करेगा। टैब बदलने को रोकने के लिए, आप अनुमति कर सकते हैं कि अनुमतियाँ ट्रिगर करने के लिए आप क्या कर सकते हैं setSelectedIndex(int) ओवरराइड करें। एक बार अनुमतियां मान्य हो जाने के बाद, आप super.setSelectedIndex(int) पर कॉल कर सकते हैं। यह वही करना चाहिए जो आप चाहते हैं।

कृपया ध्यान दें कि यदि अनुमतियाँ जाँच है एक लंबी चलने वाली कॉल (यानी एक डेटाबेस या एक सर्वर के लिए एक कॉल), आप एक SwingWorker ब्रेक अप अपने प्रसंस्करण की तरह कुछ का उपयोग करना चाहिए की जांच ताकि अनुमतियाँ AWT EventQueue बंद किया जाता है और super.setSelectedIndex(int) पर कॉल AWT EventQueue पर किया जाता है। आपके उत्तर के लिए

+0

thanx .. –

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