मैंJList अंदर बदलते समय JScrollPane डिस्प्ले स्क्रॉलबार बनाएं
myList.setListData(someArray);
का उपयोग कर गतिशील रूप से जेएसक्रॉलपैन के अंदर एक जेएलिस्ट को बदलने की कोशिश कर रहा हूं, इसके बाद मैं उम्मीद करता हूं कि JScrollPane स्क्रॉलबार को आवश्यकतानुसार दिखाएगा, लेकिन ऐसा नहीं होता है। इस मुद्दे पर गुगल करना बहुत उपयोगी नहीं था। मैंने निम्न विधियों के विभिन्न संयोजनों की कोशिश की, कम सफलता के साथ (मूल रूप से एपीआई दस्तावेज़ों के माध्यम से पोकिंग):
myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
myList.validate(); myScrollPane.validate();
myScrollPane.setPreferredSize(Dimension someDimension);
myScrollPane.setViewportView(moduleList);
myScrollPane.setLayout(...);
पहली विधि का उपयोग करते समय एक स्क्रॉलबार दिखाई देता है, लेकिन यह मॉडल परिवर्तन से सक्रिय नहीं होता है। मैंने PropertyChangeEvent में भी लगाया और यह सत्यापित किया कि मॉडल बदलते समय जेएलिस्ट आग और घटना। मुझे यहां क्या समझ नहीं आ रहा है? इस काम को करने के लिए मुझे किस विधि का उपयोग करना है, या यह भी बेहतर है कि यह संपत्ति बॉक्स से बाहर क्या काम करेगी?
यह सुनिश्चित नहीं है कि इससे मदद मिलेगी, लेकिन सुनिश्चित करें कि सेट करने के लिए आपका कॉल ईवेंट थ्रेड पर ...()) होता है। यदि आप एक अलग थ्रेड पर यूआई ऑब्जेक्ट को बदलते हैं तो सभी प्रकार की ग़लत चीजें हो सकती हैं। इसके अलावा, क्या आपने JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED को देखा है? यह बिल्कुल स्पष्ट नहीं है कि "मॉडल परिवर्तन द्वारा सक्रिय" से आपका क्या मतलब है। –